Python 移除numpy数组中的重复元组(彼此相邻的元组)
我或多或少是python/numpy新手,我遇到了以下问题: 我有numpy数组,其中第一个元组和最后一个元组总是相同的。在这两个元组之间,有时会有重复的元组(只有紧挨着的元组),我想去掉它们。应保留使用的括号结构 我已经尝试了Python 移除numpy数组中的重复元组(彼此相邻的元组),python,arrays,numpy,tuples,Python,Arrays,Numpy,Tuples,我或多或少是python/numpy新手,我遇到了以下问题: 我有numpy数组,其中第一个元组和最后一个元组总是相同的。在这两个元组之间,有时会有重复的元组(只有紧挨着的元组),我想去掉它们。应保留使用的括号结构 我已经尝试了np.unique(例如),但它改变了我原来的顺序(必须保持)。我的示例数组如下所示: myarray = np.array([[[1,1],[1,1],[4,4],[4,4],[2,2],[3,3],[1,1]]]) myarray = np.arra
np.unique
(例如),但它改变了我原来的顺序(必须保持)。我的示例数组如下所示:
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]]])
我需要一个如下所示的结果:
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]]])
提前感谢您的支持 获取沿第二个轴的一次性偏移比较,并使用布尔索引进行选择-
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]]])
或使用相等比较,然后查找所有匹配项-
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]]])
我想你的问题已经在这里得到了回答:OP需要保留原始顺序,这是
np.unique()
无法做到的。@VanDeWack在这两个元组之间,有时会有重复的元组(只有**元组彼此紧挨着)**
。可能再次重复@SBylemans,链接的Q&A不涉及彼此相邻的问题)标准。是的,这正是我需要的解决方案。两个版本都适合我,谢谢!