Python Numpy在二维数组行中查找一维数组元素

Python Numpy在二维数组行中查找一维数组元素,python,numpy,Python,Numpy,我想在二维数组的行中查找一维数组的元素 范例 In [1]: import numpy as np In [2]: a = np.array([7,7,7]) In [3]: a Out[3]: array([7, 7, 7]) In [4]: b = np.arange(15).reshape(3,5) In [5]: b Out[5]: array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11,

我想在二维数组的行中查找一维数组的元素

范例

In [1]: import numpy as np

In [2]: a = np.array([7,7,7])

In [3]: a
Out[3]: array([7, 7, 7])

In [4]: b = np.arange(15).reshape(3,5)

In [5]: b
Out[5]: 
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])
b
的第0行和第2行与
a
的对应元素不匹配,但第1行在位置2处匹配。预期产出:

array([nan, 2, nan])
如果给定行中有多个匹配项,则应使用第一个匹配项的位置


我可以使用普通的python循环找到一个解决方案,但我感兴趣的是一种将其矢量化的方法。

比较b和a元素,然后找到每行的第一个真值索引,如果都为False,则设置为nan

np.where(np.sum(b==a[:,None],1) > 0, np.argmax(b==a[:,None],1), np.nan)
Out[22]: array([ nan,   2.,  nan])

如果一行中有多个匹配怎么办?您希望结果是什么?如果b中的第1行多次出现7,那么预期的输出是什么?它可以返回第一个匹配。更新了问题。