如何在numpy数组中找到并保存重复的行?

问题描述 投票:2回答:2

我有一个数组,例如

Array = [[1,1,1],[2,2,2],[3,3,3],[4,4,4],[5,5,5],[1,1,1],[2,2,2]]

我希望能输出以下信息:

Repeated = [[1,1,1],[2,2,2]]

保留重复行的数量也会起作用,例如,

Repeated = [[1,1,1],[1,1,1],[2,2,2],[2,2,2]]

我认为解决方案可能包括numpy.unique,但我不能让它工作,是否有一个本机python / numpy函数?

python numpy rows
2个回答
3
投票

使用axisnp.unique的新return_counts=True功能为我们提供了每行的唯一行和相应的计数,我们可以使用counts > 1屏蔽行,从而得到我们想要的输出,就像这样 -

In [688]: a = np.array([[1,1,1],[2,2,2],[3,3,3],[4,4,4],[5,5,5],[1,1,1],[2,2,2]])

In [689]: unq, count = np.unique(a, axis=0, return_counts=True)

In [690]: unq[count>1]
Out[690]: 
array([[1, 1, 1],
       [2, 2, 2]])

0
投票

如果你不一定需要保留订单,你可以使用像Repeated = list(set(map(tuple, Array)))这样的东西。这样做的好处是你不需要像numpy这样的额外依赖。根据你接下来要做的事情,如果你愿意的话,你可以放弃使用Repeated = set(map(tuple, Array))并避免类型转换。

© www.soinside.com 2019 - 2024. All rights reserved.