2012-04-13 24 views
45

配列がm x nであるとします。この配列の各列を、列全体に対して何らかの操作を実行する関数に渡したいとします。配列の列をどのように反復処理するのですか?Numpyの配列の列を反復処理する方法は?

は、例えば、Iはで "99,14,12,43"、カラムは最初の反復で "1,2,3,4" となるであろう

1 99 2 
2 14 5 
3 12 7 
4 43 1 

for column in array: 
    some_function(column) 

ような4×3の配列を有します2番目の数字、3番目の数字の「2,5,7,1」です。

+1

を与える必要がありますが、インデックス--- HTTPを使用することはできません:// stackoverflowのを.com/questions/4455076/numpy-access-an-array-by-column –

答えて

102

ちょうどあなたの配列の転置を反復:

for column in array.T: 
    some_function(column) 
+3

結果を単一の配列に戻すにはどうすればよいでしょうか? –

+26

"array.T"は 'array'の 'strides'を変更するだけで、コストがかかりません([this answer](http://stackoverflow.com/a/19479436/420867)参照)。興味深い議論) – drevicko

10

これはあなたに開始

>>> for col in range(arr.shape[1]): 
    some_function(arr[:,col]) 


[1 2 3 4] 
[99 14 12 43] 
[2 5 7 1] 
+2

それは私にpythonic見ていない。 – gronostaj

+0

@gronostajあなたは正しいです、それは全くpythonicではありません。 – tcmoore3

3
for c in np.hsplit(array, array.shape[1]): 
    some_fun(c) 
関連する問題