numpy删除数组值(逻辑0)


你瞎啊!撞我心了
2025-05-16 05:33:29 (2天前)
  1. 加载为


xEdge
</跨度>
和yEdge。我做的第一件事就是创建一个副本,其中只有0,如下所示。 xEdgeOrdered和yEdgeOrdered将填充多边形点。我还将创建一个仅包含ones的一个,用于检查多边形已经采用的值。

xEdgeOrdered = np.zeros_like(

xEdge
</跨度>

yEdgeOrdered = np.zeros_like(

xEdge
</跨度>

notUsed = np.ones_like(

xEdge
</跨度>

然后我们

3 条回复
  1. 0# 疯子哥哥 | 2019-08-31 10-32



    比你的答案。



    问题来自于Numpy数组的维度是固定的,因此无法删除任何项目。解决方案可以是将值替换为您的函数无法访问的另一个值,或者使用列表而不是数组。


  2. 1# 浮华丶 | 2019-08-31 10-32



    不确定我是否完全理解上下文,但是参考你的“长话短说”,有几种方法可以删除数组中的特定点。如果要删除与特定值对应的元素,则使用逻辑来选择除具有该值的那些元素之外的所有数组元素。例如,




    1. import numpy as np
      a = np.array([1, 2, 3, 4, 5])
      val = 3

    2. If you want to delete the value

      b = a[a != val]

    3. If you want the value to become something else (eg. 0)

      a[a == val] = 0

    4. </code>


    请注意,这只会以您希望它工作的方式起作用

    val

    在您的数组中只出现一次。如果您有要删除的元素的索引,请使用

    numpy.delete()

    作为参考

    这里




    1. numpy.delete(a, index)

    2. </code>


    或者,如果您不想删除它,但只是想将其转换为另一个值(例如0),




    1. a[index] = 0

    2. </code>



    编辑
    </强>



    然后,如果您根本不想弄乱原始数组,只是想要考虑特定元素,则可以使用索引数组并相应地删除其中的元素。例如,




    1. b = np.arange(len(a))

    2. Begin algorithm on a[b]

      Once an element is found in a and should no longer be considered

      b = np.delete(b, index)

    3. Repeat

      </code>


    当索引是2时,请注意此序列的输出



    1.   >>> b = np.arange(len(a))
    2. a[b]
      array([1, 2, 3, 4, 5])
      b = np.delete(b, 2)
      a[b]
      array([1, 2, 4, 5])

    3. </code>


    使用此方法,您可以保持数组固定,但动态修改您的考虑集。


登录 后才能参与评论