保持非零轴说我有以下3D阵列:优雅的方式来索引3D阵列,并使用numpy的
L=np.arange(18).reshape((2,3,3))
L[:,:,1] = 0; L[:,[0,1],:] = 0
In []: L
Out[]:
array([[[ 0, 0, 0],
[ 0, 0, 0],
[ 6, 0, 8]],
[[ 0, 0, 0],
[ 0, 0, 0],
[15, 0, 17]]])
其中L[0,:]
零列总是通过L[1,:]
对应零列匹配。
我想现在除去中间列,其中沿着轴的总和等于0(忽略行的零。我现在的笨拙的办法是
l=np.nonzero(L.sum(axis=1))[1]
In []: L[:,:,l[:len(l)/2]]
Out[]:
array([[[ 0, 0],
[ 0, 0],
[ 6, 8]],
[[ 0, 0],
[ 0, 0],
[15, 17]]])
是什么做的少走弯路这
如果什么第一二维切片的第一关口都是零。输出会改变吗? – Divakar
@Divakar对此感到抱歉。技术上你的示例中的输出不应该改变,尽管我正在使用的特定类型的数组看起来不是这样:如果[0,0,6]的第一列设置为全0,那么列那[0,0,15]也将全部为0。 –
我明白了。因此,类似于发布的解决方案:'L [...,L.sum((0,1))!= 0]'。 – Divakar