【发布时间】:2021-04-17 13:21:56
【问题描述】:
我有一个 numpy 数组列表,想要删除重复项并保持排序数据的顺序。这是我的重复数组:
dup_arr=[np.array([[0., 10., 10.],\
[0., 2., 30.],\
[0., 3., 5.],\
[0., 3., 5.],\
[0., 3., 40.]]),\
np.array([[0., -1., -4.],\
[0., -2., -3.],\
[0., -3., -5.],\
[0., -3., -6.],\
[0., -3., -6.]])]
我尝试使用以下代码:
clean_arr=[]
for i in dup_arr:
new_array = [tuple(row) for row in i]
uniques = np.unique(new_array, axis=0)
clean_arr.append(uniques)
但是这种方法的问题是它改变了我的数据的排序,我不想再次对它们进行排序,因为这对我的真实数据来说是一项艰巨的任务。我想得到以下结果:
clean_arr=[np.array([[0., 10., 10.],\
[0., 2., 30.],\
[0., 3., 5.],\
[0., 3., 40.]]),\
np.array([[0., -1., -4.],\
[0., -2., -3.],\
[0., -3., -5.],\
[0., -3., -6.]])]
但是代码会打乱它。我也尝试了愚蠢的 for 循环,但它也没有成功,因为我无法迭代直到我的数据结束并在到达我的列表的每个数组的末尾之前停止第二个 for 循环。
clean_arr=[]
for arrays in dup_arr:
for rows in range (len(arrays)-1):
if np.all(arrays [rows]== arrays [rows+1]):
continue
else:
dat= arrays [rows]
clean_arr.append(dat)
在此先感谢您的帮助和贡献。
【问题讨论】:
标签: python arrays numpy duplicates