鉴于两个列表:确定数组B的各元件的位置在另一数组A
In [518]: A
Out[518]: [3, 4, 2, 1, 7, 6, 5]
In [519]: B
Out[519]: [4, 6]
在B
每个元素在A
存在,无一例外。
我想检索B
的索引数组,如A所示。例如,4在A的索引1中存在,6在B
的位置5。对于这种情况我的预期输出是[1, 5]
。
这是我做得到指数:
In [520]: np.flatnonzero(np.in1d(a, b))
Out[520]: array([1, 5])
不幸的是,这不会在其他大多数情况下工作。例如,如果B = [6, 4]
,我的方法在输出[5, 1]
时仍输出[1, 5]
。
有没有一种有效的numpy方法来获得我想要实现的目标?
相当肯定这之前已经来呢?那些重复的东西呢? –
'np.where'的帮助给出了这个确切的例子:'ix = np.in1d(A.ravel(),B).reshape(A.shape); np.where(IX)'。对不起,不符合你的第二条标准。 –
@JonClements可能,找不到任何东西......至于B中的模糊,肯定任何值得它的盐的numpy方法都应该能够适当地处理这些,但它不会以任何方式伤害我。 –