如何在numpy 2d数组中添加或删除特定元素?


张三岁
2025-01-21 09:15:20 (1月前)


鉴于以下numpy数组:

arr = np.array([
[1,2,3],
[4,5,6]
[7,8,9]
])
删除并返回:

arr = np.array([
[1,2,3],
[4,6],
[7,8,9]
])
我想从…中删除5

3 条回复
  1. 0# 昵称为空呵呵 | 2019-08-31 10-32



    一个numpy阵列(

    ndarray

    )是

    引用





    ndarray是具有相同类型和大小的项目的(通常是固定大小的)多维容器。




    因此,如果要使用,则不能有不同长度的行

    ndarray

    数据结构(包括所有优化)。



    一种可能的解决方法是拥有一系列列表



    1.   >>> arr=np.array([
    2. [1,2,3],
    3. [4,5,6],
    4. [7,8,9],
    5. []
    6. ])

    7. </code>


    (注意空行以转义ndarray数据类型)



    所以你可以从其中一个列表中删除一个元素



    1.   >>> arr
    2. array([list([1, 2, 3]), list([4, 5, 6]), list([7, 8, 9]), list([])],
      dtype=object)

    3. arr[1]=np.delete(arr[1], [1], axis=0)
      arr
      array([list([1, 2, 3]), array([4, 6]), list([7, 8, 9]), list([])],
      dtype=object)

    4. </code>

  2. 1# VIP | 2019-08-31 10-32



    我认为一种方法是将np.array转换为list并重复强制转换为np.array,如下所示:




    1. arr = arr.tolist()
      arr[1].pop(1)
      arr = np.array(arr)

    2. </code>


    编辑:
    这似乎是正确的,numpy方式:




    1. np.delete(arr, [4, 4])
      np.split(arr, [3, 5, 9])

    2. </code>


    EDIT2:
    似乎不会耗费更少的时间,但你可以这样检查:




    1. arr = np.empty(3, dtype=np.object)
      arr[:] = [1,2,3], [4,5,6], [7,8,9]
      arr[1].remove(5)

    2. </code>

登录 后才能参与评论