Python 如果多维数组中的所有元素都满足条件,则删除该列

Python 如果多维数组中的所有元素都满足条件,则删除该列,python,arrays,multidimensional-array,Python,Arrays,Multidimensional Array,我有一个多维数组,如 a = [[1,1,5,12,0,4,0], [0,1,2,11,0,4,2], [0,4,3,17,0,4,9], [1,3,5,74,0,8,16]] 如果该列中的所有条目都等于零,如何删除该列?在数组a中,这意味着删除第4列,从而导致: a = [[1,1,5,12,4,0], [0,1,2,11,4,2], [0,4,3,17,4,9], [1,3,5,74,8,16]] 注意:我写了一个嵌套列表,但

我有一个多维数组,如

a = [[1,1,5,12,0,4,0],
     [0,1,2,11,0,4,2],
     [0,4,3,17,0,4,9],
     [1,3,5,74,0,8,16]]
如果该列中的所有条目都等于零,如何删除该列?在数组a中,这意味着删除第4列,从而导致:

 a = [[1,1,5,12,4,0],
     [0,1,2,11,4,2],
     [0,4,3,17,4,9],
     [1,3,5,74,8,16]]
注意:我写了一个嵌套列表,但只是为了说明。我也不知道零列在数组中的先验位置

到目前为止,我的尝试只找到所有元素都等于零的列的索引:

a = np.array([[1,1,5,12,0,4,0],[0,1,2,11,0,4,2],[0,4,3,17,0,4,9],[1,3,5,74,0,8,16]])
b = np.vstack(a)
ind = []
for n,m in zip(b.T,range(len(b.T))):
    if sum(n) == 0:
       ind.append(m)

有没有办法做到这一点

使用您已有的代码,您只需执行以下操作:

for place in ind:
    for sublist in a:
        del sublist[place]
它完成了工作,但不是很令人满意


编辑:numpy很强大

import numpy as np
a = np.array(a)
a = a[:, np.sum(a, axis=0)!=0]

我同意,看起来有点麻烦-你知道一种更像蟒蛇的方式吗?