2014-02-25 54 views
0

我有一個多維數組,例如;如果該列中的所有元素滿足條件,則刪除多維數組中的列

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]] 

如何刪除該列,如果該列中的所有條目都等於零?在陣列中,這將意味着刪除導致第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

你已有的代碼,你可以這樣做:

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] 
+0

我同意,似乎有點繁瑣 - 你知道更pythonic的方式? – Holtz

相關問題