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

时间:2018-01-04 16:26:54

标签: python numpy rows

我有一个数组,例如

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函数?

3 个答案:

答案 0 :(得分:3)

使用np.uniqueaxis的新return_counts=True功能为我们提供了每行的唯一行和相应的计数,我们可以使用{{1来屏蔽行因此具有我们想要的输出,如此 -

counts > 1

答案 1 :(得分:2)

如果您需要获取重复行的索引

import numpy as np

a = np.array([[1,1,1],[2,2,2],[3,3,3],[4,4,4],[5,5,5],[1,1,1],[2,2,2]])
unq, count = np.unique(a, axis=0, return_counts=True)
repeated_groups = unq[count > 1]

for repeated_group in repeated_groups:
    repeated_idx = np.argwhere(np.all(a == repeated_group, axis=1))
    print(repeated_idx.ravel())

# [0 5]
# [1 6]

答案 2 :(得分:0)

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