Python-返回两个数组的交集 [英] Python - return intersection of two arrays

查看:94
本文介绍了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))

这篇关于Python-返回两个数组的交集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆