Python-返回两个数组的交集 [英] Python - return intersection of two arrays
问题描述
我有两个数组,我试图返回一个新数组,该数组等于我原来的两个数组的交集.两个原始数组的长度应相同.例如,如果我有:
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))
这篇关于Python-返回两个数组的交集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!