索引在多维数组中重复

时间:2016-03-04 19:36:54

标签: python python-2.7 python-3.x

索引仅在多维数组中重复。

实施例

a = [[279, 629, 590], [382, 825, 279], [629, 569, 113], [382, 785, 296]]

带有重复项的3D数组,我想返回重复项的行和列。

results = [[[279], [[0, 0], [1, 3]], [[629], [[0, 1], [2, 0]], [[382], [[1, 0], [3, 0]]]

我希望只返回重复的元素以及行和列。

1 个答案:

答案 0 :(得分:1)

这个问题的一个可能的解决方案是获得dict(我使用了defaultdict因为如果不需要手动启动空列表就更好了,其中键是值并且值是此值的坐标列表:

a = [[279, 629, 590], [382, 825, 279], [629, 569, 113], [382, 785, 296]]
from collections import defaultdict
elements = defaultdict(list)
for row_index in range(len(a)):
    for col_index in range(len(a[row_index])):
        elements[a[row_index][col_index]].append([row_index, col_index])

下一步是创建一个list的值和你指定的坐标:

multiples = [[[i], elements[i]] for i in elements if len(elements[i]) > 1]

这将是:

[[[629], [(0, 1), (2, 0)]],
 [[279], [(0, 0), (1, 2)]],
 [[382], [(1, 0), (3, 0)]]]