2016-10-23 6 views
1

私は、非常にまばらな配列を持って、次のような説明のために:2D numpy配列の希薄さを減らす方法は?

array([[1, 0, 0, 2], 
     [0, 2, 0, 0], 
     [0, 0, 0, 0], 
     [7, 0, 4, 0]]) 
:列は0と3が、私はそれらを削除し、このように結果を取得したいすべてゼロですインデックス化するので

arr = array([[0, 1, 0, 0, 0, 2], 
      [0, 0, 2, 0, 0, 0], 
      [0, 0, 0, 0, 0, 0], 
      [0, 7, 0, 0, 4, 0]]) 

私は)私が

for i in len(arr): 
    if arr[:, i] != 0: 
     newarr = np.column_stack((newarr, arr[:, i])) 

ですべての列を確認することができます。しかし、私は(a.allを使用するように私に教えて、エラーが発生したと思った..

答えて

3

は、(第1軸上any()を使用して)少なくとも一つの非ゼロ項目を持つ列を選ぶことにより、簡単なインデックスを使用します:

In [9]: arr[:, arr.any(0)] 
Out[9]: 
array([[1, 0, 0, 2], 
     [0, 2, 0, 0], 
     [0, 0, 0, 0], 
     [7, 0, 4, 0]]) 
+0

すごいです!あなたは正しい。少し説明するのを助けてもらえますか? – lerner

+0

@lerneradamsうん、更新しました。 – Kasramvd

関連する問題