首页 > 解决方案 > 检查一组索引中的行是否重复并重建

问题描述

我有一个二维二进制数组,其中的值只能取 0 和 1。我有一组索引来检查这些索引的二进制矩阵的条目是否重复。我想获得删除重复行的矩阵和一组重复索引。

例如,

>>>> a
array([[1, 0, 1, 0],
       [0, 0, 1, 1],
       [1, 0, 1, 0],
       [0, 0, 1, 1],
       [1, 1, 1, 0],
       [1, 1, 1, 0],
       [1, 1, 1, 0],
       [1, 1, 1, 0],
])

我得到一组索引(0,2,3,4,6,7)。从集合中,对应于 (0,2) 和 (4,6,7) 的行是重复的。我想要删除重复项的结果矩阵(如下所示)

>>>> b
array([[1, 0, 1, 0],
       [0, 0, 1, 1],
       [0, 0, 1, 1],
       [1, 1, 1, 0],
       [1, 1, 1, 0],
])

以及从“b”重建矩阵“a”的方法

标签: python-2.7numpyindexingunique

解决方案


感觉就像您可以在更高层次上表达您的问题以获得更优雅的解决方案;但这似乎解决了所述的字面问题。

idx = [0,2,3,4,6,7]
b = np.concatenate([np.unique(a[idx], axis=0), np.delete(a, idx, axis=0)], axis=0)

推荐阅读