我有一个数组,例如
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函数?
答案 0 :(得分:3)
使用np.unique
和axis
的新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))
并避免类型转换。