Arrays 当试图删除嵌套numpy数组中的一个元素时,整个子数组将被删除

Arrays 当试图删除嵌套numpy数组中的一个元素时,整个子数组将被删除,arrays,python-3.x,numpy,numpy-ndarray,Arrays,Python 3.x,Numpy,Numpy Ndarray,我有一个三维numpy数组(temp_X),比如: [23,34,45,56],[34,45,67,78],23,45,67,78] [12,43,65,43],[23,54,67,87],12,32,34,43] [43,45,86,23],[23,45,56,23],12,23,65,34]] 我想删除每个第三个子数组的第一个元素(突出显示的值) 下面是我尝试的代码: for i in range(len(temp_X)): temp_X = np.delete(temp_X[i][

我有一个三维numpy数组(temp_X),比如:

[23,34,45,56],[34,45,67,78],23,45,67,78]

[12,43,65,43],[23,54,67,87],12,32,34,43]

[43,45,86,23],[23,45,56,23],12,23,65,34]]

我想删除每个第三个子数组的第一个元素(突出显示的值)

下面是我尝试的代码:

for i in range(len(temp_X)):
    temp_X = np.delete(temp_X[i][(len(temp_X[i]) - 1)], [0])

不知怎的,当我运行代码时,除了3个值之外,整个数组都被删除了。非常感谢您的帮助。提前谢谢。

使用
a
作为3D输入阵列,这里有一种方法-

m = np.prod(a.shape[1:])
n = m-a.shape[-1]
out = a.reshape(a.shape[0],-1)[:,np.r_[:n,n+1:m]]
使用布尔索引替代最后一步-

out = a.reshape(a.shape[0],-1)[:,np.arange(m)!=n]
样本输入、输出-

In [285]: a
Out[285]: 
array([[[23, 34, 45, 56],
        [34, 45, 67, 78],
        [23, 45, 67, 78]],

       [[12, 43, 65, 43],
        [23, 54, 67, 87],
        [12, 32, 34, 43]],

       [[43, 45, 86, 23],
        [23, 45, 56, 23],
        [12, 23, 65, 34]]])

In [286]: out
Out[286]: 
array([[23, 34, 45, 56, 34, 45, 67, 78, 45, 67, 78],
       [12, 43, 65, 43, 23, 54, 67, 87, 32, 34, 43],
       [43, 45, 86, 23, 23, 45, 56, 23, 23, 65, 34]])
下面是另一个沿最后两个轴进行遮罩创建的遮罩-

mask = np.ones(a.shape[-2:],dtype=bool)
mask[-1,0] = 0
out = np.moveaxis(a,0,-1)[mask].T

因此,预期的输出将不是一个常规数组,因为每个子数组中的元素数都是可变的?这不是一个“嵌套数组”。这是一个列表概念。这是一个三维阵列,形状为(3,3,4)。您可以切掉一个“列”,但它会影响所有子阵列,例如,
temp_X[:,:,1:][/code>(生成(3,3,3))。@Divakar在删除部分后是。我打算稍后将每个子数组(例如:[[23,34,45,56],[34,45,67,78],[45,67,78]]展平为[23,34,45,56,34,45,67,78,45,67,78])。您应该重新塑形(到2d),然后删除一列。它保持数组的规则形状。