删除二维数组 Python 的重复项
Posted
技术标签:
【中文标题】删除二维数组 Python 的重复项【英文标题】:Remove duplicates for 2d array Python 【发布时间】:2017-05-07 01:22:57 【问题描述】:我有一个二维数组。当我向数组添加更多值时,一些值是重复的。我怎样才能删除这些?我的 aray,名为 a: 看起来像这样:
[[u'82', <a href="/12222/">Button</a>], [u'67', <a href="/12333/">Button</a>], [u'23', <a href="/12344/">Button</a>], [u'19', <a href="/12345/">Button</a>], [u'23', <a href="/12344/">Button</a>]]
我试过了
import numpy as np
def unique(a):
order = np.lexsort(a.T)
a = a[order]
diff = np.diff(a, axis=0)
ui = np.ones(len(a), 'bool')
ui[1:] = (diff != 0).any(axis=1)
return a[ui]
和
[list(t) for t in set(tuple(element) for element in a)]
和
from pandas import *
import numpy as np
a = np.array([[1, 1], [2, 3], [1, 1], [5, 4], [2, 3]])
DataFrame(a).drop_duplicates().values
但它们都不起作用。如何从二维数组中删除重复项?
【问题讨论】:
我在你的a
中没有看到重复,drop_duplicates(subset='a')
应该可以工作
@EdChum,是的,但是必须先创建数据框,然后才能将其作为子集引用。 OP 试图一步完成这一切,这就是它失败的原因。
【参考方案1】:
问题是您试图一步完成所有事情。你需要打破它(EdChum 几乎就在那里)
df = pd.DataFrame(data=a)
df = df.drop_duplicates(subset=a)
根据 EdChum 的评论,除非已创建数据框 (df),否则这将不起作用,否则我们无法将其作为子集引用。
【讨论】:
链接调用应该可以工作,将调用作为单独的函数调用与链接它们之间没有语义差异 好的,我的立场是正确的。我想我正在考虑将“a”作为子集的引用。但是,我只是按照 OP 的建议尝试了链式调用(不引用子集),并且没有问题。 现在我的代码是: import pandas as pd import numpy as np a = np.array(list) #DataFrame(a).drop_duplicates().values df = pd.DataFrame(data=a) df = df.drop_duplicates(subset=a) 我得到这个错误:回溯(最近一次调用最后):文件“scrapefolk.py”,第 114 行,在以上是关于删除二维数组 Python 的重复项的主要内容,如果未能解决你的问题,请参考以下文章
php将一个二维数组按照某个字段值合并成一维数组,如果有重复则将重复的合并成二维数组