在 Numpy 中取消选择不删除的列

Deselecting a column without deletion in Numpy

我有一个这种形式的 numpy 数组:

n = [[[5 0 2]
  [8 9 7]
  [2 2 2]
  [5 9 5]   <-- target value
  [4 1 5]]
 [[5 3 9]
  [4 2 7]
  [7 0 7]
  [4 9 6]   <-- target value
  [3 8 5]]]

我想从每个单独的数组中获取除第 3 行以外的所有值。 IE。结果应该是这样的:

 [[[5 0 2]
  [8 9 7]
  [2 2 2]
  [4 1 5]]

 [[5 3 9]
  [4 2 7]
  [7 0 7]
  [3 8 5]]]

我尝试使用索引,但无法实现。我有一个大的 numpy 数组,需要在其中完成此操作。除了复制它并使用 delete 方法删除它之外,是否有任何有效的方法来做到这一点。 此外,我不想通过创建副本来利用太多 space,我只想使用索引暂时忽略特定列。

您可以创建所选元素的列表,弹出目标元素:

import numpy as np

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

target_element = 3

s = list(range(len(n[0])))
s.pop(target_element)
print(n[:,s])

s = list(range(len(n[0])))
print(n[:,s[:target_element] + s[target_element+1:]])

我尝试了这个并且成功了:

You can try using this method:
t = np.array([[[5, 0, 2],
        [8, 9, 7],
        [2, 2, 2],
        [5, 9, 5],
        [4, 1, 5]],

       [[5, 3, 9],
        [4, 2, 7],
        [7, 0, 7],
        [4, 9, 6],
        [3, 8, 5]]])
t[:,[0,1,2,4]]