numpy使用UNKNOWN数的多个条件返回索引



考虑两个数组(X和Y(,X是2D数据数组(灰度图像(,Y是条件数组,其中数组X需要基于以下条件进行过滤:

X = np.array([[0,0,0,0,4], [0,1,1,2,3], [1,1,2,2,0], [0,0,2,2,3], [0,0,0,0,0]])
Y = np.array([1,2,3])
X:
[[0 0 0 0 4]
[0 1 1 2 3]
[1 1 2 2 0]
[0 0 2 2 3]
[0 0 0 0 0]]
Y:
[1 2 3]

我需要根据数组Y中的值来选择数组X的元素/索引,这样:

Z = np.argwhere((X == Y[0]) | (X == Y[1]) | (X == Y[2]))
Z:
[[1 1]
[1 2]
[1 3]
[1 4]
[2 0]
[2 1]
[2 2]
[2 3]
[3 2]
[3 3]
[3 4]]

这可以通过在数组Y的项上使用循环来完成,是否有numpy函数可以实现这一点?

np.argwhere函数中使用多个条件也可以实现,但是,条件的数量(数组Y的长度(以前是未知的。

感谢

关键是准备正确的掩码。为此,请使用numpy.isin:

np.isin(X, Y)

结果,您将得到一个与X形状相同的布尔掩码。现在,您可以使用适当的方法获取索引。

相关内容

  • 没有找到相关文章

最新更新