2012-02-12 106 views
1

我有很多100x100的網格,有沒有一種有效的方法使用numpy來計算每個網格點的中值,並返回一個100x100的網格與中值?目前,我正在使用for循環遍歷每個網格點,計算中值,然後在最後將它們組合爲一個網格。我相信有更好的方法來使用numpy來做到這一點。任何幫助,將不勝感激!謝謝!高效的二維numpy數組統計

回答

6

創建爲100x100xN陣列(或疊加在一起,如果這是不可能的),並使用np.median與正確的軸做一氣呵成:

import numpy as np 
a = np.random.rand(100,100) 
b = np.random.rand(100,100) 
c = np.random.rand(100,100) 
d = np.dstack((a,b,c)) 
result = np.median(d,axis=2) 
+0

感謝è先生!這非常有意義,我不知道dstack函數,但我喜歡它!你知道numpy是否同樣支持獲得第75個百分點的函數?如果沒有,那沒問題,你已經幫了很多忙! – Jonathan 2012-02-13 14:18:23

+0

只要做'np.sort(d,axis = 2)'並抓住你想要的切片。 – YXD 2012-02-13 14:21:52

0

多少電網有哪些?

一種選擇是創建一個100x100xnumGrids的3D數組並計算第三維中的中值。

0

位數使用軸參數:

import numpy as np 

data = np.random.rand(100, 5, 5) 

print np.median(data, axis=0) 

print np.median(data[:, 0, 0]) 
print np.median(data[:, 1, 0])