python – 从numPy数组列表中删除重复项
作者:互联网
我有一个普通的Python列表,包含(多维)numPy数组,所有相同的形状和相同数量的值.列表中的某些数组与早期的数组重复.
我有问题,我想删除所有重复项,但数据类型为numPy数组的事实使这一点复杂化…
•我不能使用set(),因为numPy数组不可清除.
•我无法在插入期间检查重复项,因为数组是由函数批量生成的,并使用.extend()添加到列表中.
•如果不使用numPy自己的函数之一,numPy数组不能直接比较,所以我不能只使用“if x in list”…
•列表的内容需要在流程结束时保留numPy数组;我可以比较转换为嵌套列表的数组的副本,但我不能永久地将数组转换为直接的python列表.
关于如何有效删除重复的任何建议?
解决方法:
使用这里的解决方案:Most efficient property to hash for numpy array我们看到,如果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])]
标签:python,arrays,duplicate-removal,numpy,list 来源: https://codeday.me/bug/20190528/1171823.html