【问题标题】:Deleting a block in a numpy array in python在python中删除一个numpy数组中的一个块
【发布时间】:2025-12-26 18:10:07
【问题描述】:

嗨,有一个描述为 viz[v][i][k] 的 3D numpy 数组。鉴于上面的例子,

    [[[1 0 0 0]
  [1 0 0 0]
  [0 1 0 0]
  [1 0 0 0]
  [1 0 0 0]
  [1 0 0 0]
  [1 0 0 0]
  [1 0 0 0]
  [1 0 0 0]
  [1 0 0 0]]

 [[1 0 0 0]
  [1 0 0 0]
  [0 0 1 0]
  [1 0 0 0]
  [1 0 0 0]
  [1 0 0 0]
  [1 0 0 0]
  [1 0 0 0]
  [1 0 0 0]
  [1 0 0 0]]

 [[1 0 0 0]
  [1 0 0 0]
  [0 0 0 1]
  [1 0 0 0]
  [1 0 0 0]
  [1 0 0 0]
  [1 0 0 0]
  [1 0 0 0]
  [1 0 0 0]
  [1 0 0 0]]]

我想删除给定 v 的某个块,假设 v 为 0,那么我想删除第一个整个 2d 数组。我怎么能在python中做到这一点? 谢谢!

【问题讨论】:

    标签: python arrays numpy


    【解决方案1】:

    你可以使用numpy.delete:

    >>> ix = 0
    >>> arr
    array([[[1, 0],
            [0, 1]],
    
           [[2, 0],
            [0, 2]],
    
           [[3, 0],
            [0, 3]]])
    
    >>> np.delete(arr, ix, axis=0)
    array([[[2, 0],
            [0, 2]],
    
           [[3, 0],
            [0, 3]]])
    

    【讨论】:

      【解决方案2】:

      您可以使用numpy.delete 从您的 3D NumPy 矩阵中删除特定的 2D 矩阵,如下所示:

      numpy.delete(arr, [要删除的索引], 删除数组的轴)

      如果你想删除第一个二维矩阵,你可以使用:

      np.delete(arr=z, obj=[0], 轴=0)

      这样:

      >>> import numpy as np
      >>> x = np.zeros((3,3,3))
      >>> print(x)
      [[[0. 0. 0.]
        [0. 0. 0.]
        [0. 0. 0.]]
      
       [[0. 0. 0.]
        [0. 0. 0.]
        [0. 0. 0.]]
      
       [[0. 0. 0.]
        [0. 0. 0.]
        [0. 0. 0.]]]
      >>> np.delete(arr=x, obj=[0], axis=0)
      array([[[0., 0., 0.],
              [0., 0., 0.],
              [0., 0., 0.]],
      
             [[0., 0., 0.],
              [0., 0., 0.],
              [0., 0., 0.]]])
      

      【讨论】: