从numPy数组列表中删除重复项

SoIt开始

我有一个普通的Python列表,其中包含(多维)numPy数组,它们的形状和数量均相同。列表中的某些数组是早期数组的重复。

我有一个要删除所有重复项的问题,但是数据类型为numPy数组这一事实使这一点变得有些复杂...

•我不能使用set(),因为numPy数组不可哈希。
•我无法在插入过程中检查重复项,因为数组是通过函数批量生成的,并使用.extend()添加到列表中。
•numpy的数组不是没有依靠NumPy的自身功能的一个直接的可比性,所以我不能只是去的东西,用“如果x在列表” ...
•列表中需要的内容保持与NumPy阵列末的过程; 我可以比较转换为嵌套列表的数组的副本,但不能将数组永久转换为直接的python列表。

关于如何在此处有效删除重复项的任何建议?

乔尔

在这里使用解决方案:对numpy数组进行散列的最有效属性,我们看到如果a是一个numpy数组,则散列与a.tostring()一起使用效果最佳。所以:

import numpy as np
arraylist = [np.array([1,2,3,4]), np.array([1,2,3,4]), np.array([1,3,2,4])]
L = {array.tostring(): array for array in arraylist}
L.values() # [array([1, 3, 2, 4]), array([1, 2, 3, 4])]

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章