Python-返回两个数组的交集

问题描述:

我有两个数组,我试图返回一个新数组,该数组等于我原来的两个数组的交集.两个原始数组的长度应相同.例如,如果我有:

I have two arrays and I am trying to return a new array that equals the intersection of my original two arrays. The two original arrays should be of the same length. For example, if I have:

arr1 = np.array([(255, 255, 255), (255, 255, 255)])

arr2 = np.array([(255, 255, 255), (255, 255, 255)])

我应该得到:

intersectedArr = ([(255, 255, 255), (255, 255, 255])

但是,如果我有

arr1 = np.array([(100, 100, 100), (255, 255, 255)])

arr2 = np.array([(255, 255, 255), (255, 255, 255)])

我应该得到

([(255, 255, 255)])

到目前为止,我已经尝试过:

So far i've tried:

intersectedArr = np.intersect1d(arr1, arr2)

,但这将返回[255]而不是预期的([(255, 255, 255)])

but this returns [255] instead of the expected ([(255, 255, 255)])

有人可以帮忙吗?预先感谢!

Can someone help? Thanks in advance!

不确定数组的大小,但是如果数组很小,这可能会起作用:

Not sure how big your arrays will get, but if they remain fairly small, this could work:

import numpy as np

arr1 = np.array([(255, 255, 255), (255, 255, 255)])
arr2 = np.array([(255, 255, 255), (255, 255, 255)])
intersectedArr = []

for a1, a2 in zip(arr1, arr2):
    if np.array_equal(a1, a2):
        intersectedArr.append(a1)
print(np.array(intersectedArr))

arr1 = np.array([(100, 100, 100), (255, 255, 255)])
arr2 = np.array([(255, 255, 255), (255, 255, 255)])
intersectedArr = []

for a1, a2 in zip(arr1, arr2):
    if np.array_equal(a1, a2):
        intersectedArr.append(a1)
print(np.array(intersectedArr))