Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何删除重复的数组元素并在python中保持第一次出现?_Python_Arrays - Fatal编程技术网

如何删除重复的数组元素并在python中保持第一次出现?

如何删除重复的数组元素并在python中保持第一次出现?,python,arrays,Python,Arrays,我有以下大小为(5,2)的numpy数组: 我想删除所有重复的行(在本例中为[4,3]),保留第一个匹配项并返回如下所示: A = [[5,6] [4,3] [2,1] [8,9]] A=[[5,6], [4,3], [2,1], [4,3], [8,9]] B=集合(映射(元组,A)) 印刷品(B) 在不失去秩序的情况下: uniq = [] for i in A: if not i in uniq: uniq.appe

我有以下大小为(5,2)的numpy数组:

我想删除所有重复的行(在本例中为[4,3]),保留第一个匹配项并返回如下所示:

A = [[5,6]
     [4,3]
     [2,1]
     [8,9]]

     
A=[[5,6],
[4,3],
[2,1],
[4,3],
[8,9]]
B=集合(映射(元组,A))
印刷品(B)

在不失去秩序的情况下:

uniq = []
for i in A:
    if not i in uniq:
        uniq.append(i)
print('l=%s' % str(A))
print('uniq=%s' % str(uniq))

函数numpy.unique可以帮助您从数组中提取唯一值。指定轴参数以选择要操作的轴。 试试这个

提取唯一行。
numpy.unique将返回一个排序数组。如果要检索原始顺序,可以使用return_index=True参数返回唯一元素第一次出现的索引,然后从原始数组中获取这些元素。 对于您的示例,这将起作用:

A[np.sort(np.unique(a, return_index=True, axis=0)[1])]

使用转换为字符串的值作为键。展开dict以获取唯一元素的列表

list(dict([[str(x),x] for x in A]).values())

真遗憾,你把名单的顺序搞乱了。我添加了两个选项。我使用的是numpy数组而不是列表。数组没有append特性,但在一个更复杂的示例中使用了它,它没有删除它们的重复行或保留order@Iceans我很抱歉误会了你。np.unique不保持顺序,它按排序顺序返回元素。我更新了我的答案,告诉你如何保持秩序。@Iceans另外,确保你的axis参数是正确的。如果仍然不起作用,请提供更复杂的示例。@redgen有没有办法向您发送一些代码?我还是不能把它弄到手work@Iceans不幸的是,stackoverflow上没有私人消息。您可以编辑您的问题并添加此代码或添加一些外部链接。我很乐意帮助你。
A[np.sort(np.unique(a, return_index=True, axis=0)[1])]
list(dict([[str(x),x] for x in A]).values())