2012-04-13 25 views
45

Giả sử tôi có và m x n mảng. Tôi muốn vượt qua từng cột của mảng này đến một hàm để thực hiện một số thao tác trên toàn bộ cột. Làm cách nào để lặp lại các cột của mảng?Numpy làm thế nào để lặp qua các cột của mảng?

Ví dụ, tôi có một mảng 4 x 3 như

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

for column in array: 
    some_function(column) 

nơi cột sẽ là "1,2,3,4" trong phiên đầu tiên, "99,14,12,43" trong thứ hai, và "2,5,7,1" trong phần ba.

+1

bạn không thể sử dụng một chỉ số --- http: // stackoverflow .com/questions/4455076/numpy-access-an-array-by-column –

Trả lời

102

Chỉ cần lặp qua các hoán của mảng của bạn:

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

Điều gì sẽ là cách tốt để kết hợp kết quả trở lại thành một mảng đơn? –

+26

Đối với những người tự hỏi, 'mảng.T' không tốn kém, vì nó chỉ thay đổi 'bước tiến' của' mảng' (xem [câu trả lời này] (http://stackoverflow.com/a/19479436/420867) cho một thú vị thảo luận) – drevicko

10

này sẽ cho bạn một sự khởi đầu

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


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

Nó không nhìn pythonic với tôi. – gronostaj

+0

@gronostaj bạn nói đúng, nó không phải là pythonic chút nào. – tcmoore3

3
for c in np.hsplit(array, array.shape[1]): 
    some_fun(c) 
Các vấn đề liên quan