[英]Numpy find 1d array elements in 2d array rows
我想在2d数组的行中找到1d数组的元素。
例
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]])
行0和2 b
不具备的相应元素相匹配a
,但行1具有在位置2的预期输出的匹配:
array([nan, 2, nan])
如果给定行中有多个匹配项,则应使用第一个匹配项的位置。
我可以使用普通的python循环研讨解决方案,但我对矢量化的方法感兴趣。
将b和一个元素进行明智的比较,然后为每一行找到第一个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])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.