我或多或少是python / numpy的新手,我遇到了这个问题:
我有numpy数组,其中第一个和最后一个元组总是相同的。在这两者之间,有时候我想要摆脱重复的元组(只有那些直接相邻的元组)。应保持使用的括号结构。
我已经尝试np.unique
(例如1,2),但它会更改我的原始订单(必须维护)。我的示例数组如下所示:
myarray = np.array([[[1,1],[1,1],[4,4],[4,4],[2,2],[3,3],[1,1]]])
我需要一个看起来像这样的结果:
myarray = np.array([[[1,1],[4,4],[2,2],[3,3],[1,1]]])
提前感谢您的支持!
答案 0 :(得分:2)
沿第二轴获得一次性偏移比较,并使用布尔索引来选择 -
myarray[:,np.r_[True,(myarray[0,1:] != myarray[0,:-1]).any(-1)]]
示例运行 -
In [42]: myarray
Out[42]:
array([[[1, 1],
[1, 1],
[4, 4],
[4, 4],
[2, 2],
[3, 3],
[1, 1]]])
In [43]: myarray[:,np.r_[True,(myarray[0,1:] != myarray[0,:-1]).any(-1)]]
Out[43]:
array([[[1, 1],
[4, 4],
[2, 2],
[3, 3],
[1, 1]]])
或者通过相等比较然后查找ALL
匹配 -
In [47]: myarray[:,np.r_[True,~((myarray[0,1:] == myarray[0,:-1]).all(-1))]]
Out[47]:
array([[[1, 1],
[4, 4],
[2, 2],
[3, 3],
[1, 1]]])