如果你正在寻找匹配非零XY指数对,您可以使用布尔取与输入数组的非零口罩之间,然后用np.nonzero
,像这样 -
out = np.nonzero((img1!=0) & (img2!=0))
您可以验证与np.intersect1d
这些结果
l_intsct = np.intersect1d(np.nonzero(img1.ravel())[0],np.nonzero(img2.ravel())[0])
out = np.unravel_index(l_intsct,img1.shape)
采样运行 - - 让比赛的线性指数从img1
和img2
给了我们第二个方法手头要解决的问题,像这样经过
In [127]: img1
Out[127]:
array([[3, 2, 3, 1, 0],
[3, 1, 1, 2, 2],
[0, 2, 3, 2, 1],
[0, 0, 0, 4, 2]])
In [128]: img2
Out[128]:
array([[1, 1, 4, 0, 0],
[0, 0, 0, 0, 2],
[4, 1, 0, 3, 1],
[1, 0, 4, 1, 4]])
In [129]: np.nonzero(img1)
Out[129]:
(array([0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3]),
array([0, 1, 2, 3, 0, 1, 2, 3, 4, 1, 2, 3, 4, 3, 4]))
In [130]: np.nonzero(img2)
Out[130]:
(array([0, 0, 0, 1, 2, 2, 2, 2, 3, 3, 3, 3]),
array([0, 1, 2, 4, 0, 1, 3, 4, 0, 2, 3, 4]))
In [131]: np.nonzero((img1!=0) & (img2!=0))
Out[131]: (array([0, 0, 0, 1, 2, 2, 2, 3, 3]), array([0, 1, 2, 4, 1, 3, 4, 3, 4]))
In [132]: l_intsct = np.intersect1d(np.nonzero(img1.ravel())[0],np.nonzero(img2.ravel())[0])
In [133]: np.unravel_index(l_intsct,img1.shape)
Out[133]: (array([0, 0, 0, 1, 2, 2, 2, 3, 3]), array([0, 1, 2, 4, 1, 3, 4, 3, 4]))
假设'img1'和'img2'的样本数据并向我们显示期望的输出? – Divakar
可能的重复:http://stackoverflow.com/questions/9269681/intersection-of-2d-numpy-ndarrays – AGML
@AGML这个问题是关于几何(也属于无限集合)交集,而这一个是关于有限集合交集。类似,但不同! –