根据接近度从2D numpy数组中删除元素

错误不是

我有以下形状的ndarray:

[[5 2][6 2][10 2][10 10]]

这些是XY坐标。如何遍历此数组并删除所有2D(欧几里德距离)中比当前阈值更接近当前元素的所有后续元素?例如,我将距离阈值设置为1,我将得到以下数组

[[5 2][10 2][10 10]]

[6 2]将被删除,因为它比阈值(1)更近。

真实数据:

array([[ 25, 478],
   [ 26, 366],
   [ 26, 478],
   [ 27, 183],
   [ 28, 367],
   [ 28, 477],
   [ 29, 477],
   [ 43, 374],
   [ 44, 374],
   [ 45, 374],
   [ 46, 374],
   [ 47, 374],
   [ 47, 375],
   [ 57,  82],
   [ 58, 133],
   [ 60,  25],
   [ 86, 445],
   [ 89, 226],
   [ 89, 227],
   [ 89, 228],
   [ 89, 229],
   [ 89, 230],
   [ 96, 286],
   [105, 404],
   [106, 404],
   [107, 403],
   [108, 403],
   [117, 355],
   [119, 355],
   [121,  43],
   [122,  42],
   [122,  43],
   [122, 127],
   [122, 490],
   [123, 489],
   [123, 490],
   [137, 438],
   [138, 437],
   [151, 229],
   [162, 149],
   [163, 326],
   [188, 465],
   [188, 466],
   [189, 115],
   [189, 116],
   [218, 291],
   [230, 174],
   [230, 175],
   [230, 176],
   [230, 177],
   [231, 173],
   [231, 174],
   [231, 175],
   [231, 176],
   [231, 177],
   [231, 178],
   [240,  33],
   [241,  33],
   [242,  34],
   [249, 118],
   [250, 256],
   [260, 208],
   [260, 209],
   [260, 210],
   [274, 372],
   [277,  39],
   [302, 216],
   [302, 217],
   [302, 218],
   [302, 219],
   [302, 220],
   [302, 221],
   [302, 222],
   [302, 223],
   [315, 325],
   [322, 258],
   [322, 259],
   [341, 172],
   [346, 457],
   [359, 388],
   [360, 389],
   [361, 390],
   [386, 307],
   [392, 372],
   [393, 136],
   [393, 360],
   [393, 374],
   [394, 134],
   [394, 135],
   [394, 136],
   [394, 137],
   [394, 138],
   [394, 139],
   [394, 140],
   [394, 141],
   [394, 142],
   [394, 143],
   [394, 144],
   [409, 266],
   [437, 132],
   [439, 131],
   [467, 100],
   [471, 236],
   [472, 235],
   [474, 234],
   [479, 104]])
奥利弗·W。

在列表中进行迭代,同时从中删除元素是一种不好的做法,因为这会导致无法预料的结果。因此,我认为调用一个函数并从该函数返回一个新列表更加清楚。

def reduce_tail(l, index, threshold=1):
    elm = l[index]
    mask = np.linalg.norm(elm-l, axis=1) > threshold
    mask[:index+1] = True  #ensure to return the head of the array unchanged
    return l[mask]

def my_reduce(z, threshold=1):
    z = np.array(z)
    index = 0
    while True:
        z = reduce_tail(z, index, threshold)
        index += 1
        if index == z.shape[0]:
            break
    return z.tolist()

演示:

>>> z = [[5, 2],[6, 2],[5,1],[10, 2],[10, 10]]
>>> x = [[5, 2],[6, 2],[6,3],[10, 2],[10, 10]]
>>> l = [[5, 2],[6, 2],[10, 2],[10, 10]]
>>> my_reduce(l)
[[5, 2], [10, 2], [10, 10]]
>>> my_reduce(x)
[[5, 2], [6, 3], [10, 2], [10, 10]]
>>> my_reduce(z)
[[5, 2], [10, 2], [10, 10]]
>>> 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据列表从2D Numpy数组中删除元素

来自分类Dev

将2D numpy数组排序到每个元素到特定点的接近度

来自分类Dev

从2D数组中删除元素

来自分类Dev

删除2d numpy数组中具有相反元素的行

来自分类Dev

在Java中删除2d数组中的空元素

来自分类Dev

使用pop从2D数组中删除元素

来自分类Dev

如何在Numpy中更改2D数组元素?

来自分类Dev

根据条件从数组中多次删除元素

来自分类Dev

根据SQL查询从数组中删除元素

来自分类Dev

根据值从数组中删除元素

来自分类Dev

从numpy中的3d数组中删除2d子数组

来自分类Dev

随机发现元素时如何从2D数组中删除元素

来自分类Dev

如何从numpy 2d数组中的每个元素创建一个邻居数组

来自分类Dev

带有numpy的Python:如何根据特定索引从二维数组的每一行中删除元素

来自分类Dev

根据嵌套数组中的值删除数组元素

来自分类Dev

根据Python中的变量将n维numpy数组转换为2D数组

来自分类Dev

我如何设置2D数组中某些元素的值(使用numpy在列表中)?

来自分类Dev

根据条件切片2D numpy数组

来自分类Dev

根据条件在php中搜索并删除多维数组中的元素

来自分类Dev

根据bash中的模式从数组中删除元素

来自分类Dev

重新排列numpy数组中的元素以在2d中绘制3d数组,并保留分组

来自分类Dev

如何在2d numpy数组中设置随机元素而不循环?

来自分类Dev

选择2D NumPy数组中每列一定范围内的元素

来自分类Dev

在2D Numpy数组中删除彼此之间有特定距离的点

来自分类Dev

比较2D数组中的元素

来自分类Dev

比较2D数组中的元素

来自分类Dev

根据熊猫数据框替换numpy 2D数组中的值

来自分类Dev

根据numpy Python中的条件对2D数组进行子集化

来自分类Dev

根据numpy Python中的条件对2D数组进行子集化

Related 相关文章

  1. 1

    根据列表从2D Numpy数组中删除元素

  2. 2

    将2D numpy数组排序到每个元素到特定点的接近度

  3. 3

    从2D数组中删除元素

  4. 4

    删除2d numpy数组中具有相反元素的行

  5. 5

    在Java中删除2d数组中的空元素

  6. 6

    使用pop从2D数组中删除元素

  7. 7

    如何在Numpy中更改2D数组元素?

  8. 8

    根据条件从数组中多次删除元素

  9. 9

    根据SQL查询从数组中删除元素

  10. 10

    根据值从数组中删除元素

  11. 11

    从numpy中的3d数组中删除2d子数组

  12. 12

    随机发现元素时如何从2D数组中删除元素

  13. 13

    如何从numpy 2d数组中的每个元素创建一个邻居数组

  14. 14

    带有numpy的Python:如何根据特定索引从二维数组的每一行中删除元素

  15. 15

    根据嵌套数组中的值删除数组元素

  16. 16

    根据Python中的变量将n维numpy数组转换为2D数组

  17. 17

    我如何设置2D数组中某些元素的值(使用numpy在列表中)?

  18. 18

    根据条件切片2D numpy数组

  19. 19

    根据条件在php中搜索并删除多维数组中的元素

  20. 20

    根据bash中的模式从数组中删除元素

  21. 21

    重新排列numpy数组中的元素以在2d中绘制3d数组,并保留分组

  22. 22

    如何在2d numpy数组中设置随机元素而不循环?

  23. 23

    选择2D NumPy数组中每列一定范围内的元素

  24. 24

    在2D Numpy数组中删除彼此之间有特定距离的点

  25. 25

    比较2D数组中的元素

  26. 26

    比较2D数组中的元素

  27. 27

    根据熊猫数据框替换numpy 2D数组中的值

  28. 28

    根据numpy Python中的条件对2D数组进行子集化

  29. 29

    根据numpy Python中的条件对2D数组进行子集化

热门标签

归档