2012-04-13 10 views
45

Załóżmy, że mam i tablicę m x n. Chcę przekazać każdą kolumnę tej tablicy do funkcji, aby wykonać operację na całej kolumnie. Jak mogę iterować po kolumnach tablicy?Numpy jak iterować po kolumnach tablicy?

Na przykład, posiada 4 x 3 tablicę jak

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

for column in array: 
    some_function(column) 

gdzie kolumna byłaby "1,2,3,4" w pierwszej iteracji "99,14,12,43" W drugi, a "2,5,7,1" w trzecim.

+1

Nie możesz używać indeksu --- http: // stackoverflow .pl/questions/4455076/numpy-access-an-array-by-column –

Odpowiedz

102

Wystarczy iteracyjne nad transponowane swojej tablicy:

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

Jaki byłby dobry sposób na połączenie wyniku z powrotem do pojedynczej tablicy? –

+26

Dla tych, którzy się zastanawiają, 'tablica.T' nie jest kosztowna, ponieważ po prostu zmienia" kroki "z' tablicy' (patrz [ta odpowiedź] (http://stackoverflow.com/a/19479436/420867) dla interesująca dyskusja) – drevicko

10

To powinno dać początek

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


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

Nie wygląda mi to pytonowo. – gronostaj

+0

@gronostaj masz rację, w ogóle nie jest to pythonic. – tcmoore3

3
for c in np.hsplit(array, array.shape[1]): 
    some_fun(c)