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,那么预期的输出是什么?它可以返回第一个匹配。更新了问题。