gpt4 book ai didi

python - 删除 numpy 数组中的重复元组(彼此直接相邻的元组)

转载 作者:行者123 更新时间:2023-12-01 01:50:34 25 4
gpt4 key购买 nike

我或多或少是 python/numpy 的新手,我遇到了这个问题:

我有 numpy 数组,其中第一个和最后一个元组始终相同。在这之间,有时会有一些重复的元组(只有直接相邻的元组),我想删除它们。应保留使用的括号结构。

我已经尝试了 np.unique (例如 12 ),但它改变了我原来的顺序(必须保持)。我的示例数组如下所示:

    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]]])

预先感谢您的支持!

最佳答案

获取沿第二轴的一次性偏移比较并使用 bool 索引来选择 -

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]]])

关于python - 删除 numpy 数组中的重复元组(彼此直接相邻的元组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50756639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com