我希望在2d数组的行中找到一维数组的元素。
示例
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循环来研出一个解决方案,但我感兴趣的是一种将其向量化的方法。
发布于 2017-05-25 02:04:11
比较b和a元素,然后为每一行查找第一个True值索引,如果所有为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])https://stackoverflow.com/questions/44170976
复制相似问题