从两个numpy数组中删除重复的元素

Huanian Zhang

我有两个numpy数组ab,具有两千万个元素(浮点数)。如果这两个数组的组合元素相同,则我们将其称为重复,应将其从两个数组中删除。例如,

a = numpy.array([1,3,6,3,7,8,3,2,9,10,14,6])
b = numpy.array([2,4,15,4,7,9,2,2,0,11,4,15])

在这两个数组中,我们a[2]&b[2]与相同a[11]&b[11],然后将其称为重复元素,应将其删除。a[1]&b[1]vs相同a[3]&b[3]尽管每个数组本身都有重复的元素,但它们不被视为重复的元素。所以我希望返回的数组是:

a = numpy.array([1,3,6,7,8,3,2,9,10,14])
b = numpy.array([2,4,15,7,9,2,2,0,11,4])

任何人都有最聪明的方法来实现这种减少?

BM

首先,您必须打包ab识别重复项。如果值是正整数(在其他情况下,请参见编辑),可以通过以下方法实现:

base=a.max()+1
c=a+base*b

然后只需在中找到唯一值c

val,ind=np.unique(c,return_index=True)

在检索相关值ab

ind.sort()
print(a[ind])
print(b[ind])

用于复制副本。(这里有两个):

[ 1  3  6  7  8  3  2  9 10 14]
[ 2  4 15  7  9  2  2  0 11  4]

编辑

无论数据类型如何,都可以按如下方式制作c数组,将数据打包为字节:

ab=ascontiguousarray(vstack((a,b)).T) 
dtype = 'S'+str(2*a.itemsize)
c=ab.view(dtype=dtype)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从两个Numpy数组中删除匹配元素

删除重复元素并从两个数组中取出一个元素

合并两个numpy数组并删除重复项?

比较两个numpy数组并删除元素

如何从两个列表中删除重复的元素(成对)?

如何删除对象数组中的两个重复值

如何从数组或列表中删除两个元素的序列?

总结两个NumPy数组中的正负元素

Javascript函数根据两个条件/两个属性从数组中删除特定元素

在删除重复项时合并两个多维数组,依赖于它们的特定元素

Python,比较两个numpy数组,查找组并删除重复项

如何从两个嵌套列表的数组中删除 n 个元素而不丢失数组?

MATLAB:如何从两个对应的列向量中删除重复元素?

如何在numpy数组中将两个相邻元素添加到新元素中

比较两个Javascript数组并删除重复项

删除两个重复的项目javascript数组

比较两个JavaScript数组并删除重复的条目

从具有子数组的多维数组中删除最后两个元素

比较2个数组以获取相等的元素,然后从两个数组中删除条目

通过检查两个元素从数组中获取重复的值

合并两个排序的数组时,使用Java中的集合删除重复项

当两个值相同时从数组中删除重复项

如何删除数组中两个重复对象的实例

删除对象数组javascript / react-native中两个重复的字段之一

使用Javascript从两个对象数组中删除重复项

两个numpy数组中较大的一个,按元素

从PHP中的两个数组中删除重复项

从js中的两个数组中删除重复的哈希?

从任意两个整数的和中删除数组中的相似元素