我有一个多维数组,如;
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]]
N.b我写了一个嵌套列表,但只是为了说清楚。我也不知道零列将在数组中的先验。
到目前为止,我的尝试只找到所有元素都等于零的列的索引:
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)
有没有办法实现这个目标?
答案 0 :(得分:0)
使用您已有的代码,您可以这样做:
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]