2013-04-11 41 views
19

Tôi có một mảng mờ. Tôi muốn tạo một mảng mới là trung bình trên mỗi phần tử thứ ba. Vì vậy, mảng mới sẽ là một phần ba kích thước như bản gốc.Tính trung bình trên mọi phần tử n của một mảng có nhiều mảng

Như một ví dụ:

np.array([1,2,3,1,2,3,1,2,3]) 

nên trả lại mảng:

np.array([2,2,2]) 

bất cứ ai có thể đề xuất một cách hiệu quả để làm điều này? Tôi đang vẽ những khoảng trống.

Trả lời

31

Nếu mảng của bạn arr có chiều dài chia hết cho 3:

np.mean(arr.reshape(-1, 3), axis=1) 

Tái đến một mảng chiều cao và sau đó thực hiện một số hình thức giảm hoạt động trên một trong những khía cạnh khác là một yếu tố chính của chương trình NumPy.

+7

Jaime - cảm ơn bạn, đó là một cách rất thanh lịch để làm mọi thứ. Bạn có lời khuyên nào cho nơi mà người ta có thể đọc về những cái gọi là 'mặt hàng chủ lực của lập trình numpy'? – user1654183

+1

nếu chiều dài 'arr' không chia hết cho 3, bạn có thể làm điều gì đó như: ' arr = np.nanmean (np.pad (arr.astype (float), (0, 3 - arr.size% 3), mode = 'constant', constant_values ​​= np.NaN) .reshape (-1, 3), axis = 1) ' – plong0

Các vấn đề liên quan