2017-09-25 70 views
0

我有切片,行和列的3D矩陣。它有720片。如何在循環中總結具有3D矩陣的特定切片?

我想總結前20個切片,然後是下20個,等等。

我已經有一些非常笨拙的代碼。

問題

我如何使用一個循環來實現這一目標?


到目前爲止我的代碼:

# (bin_mask_arrs is already in a for loop. Shape is (720,461,421) 
bin_mask_arrs[i]= np.nanmean(bin_mask_arrs[i]) 

a1 = (np.sum(bin_mask_arrs[:24,1,1]))            
a2 = (np.sum(bin_mask_arrs[25:48,1,1])) 
a3 = (np.sum(bin_mask_arrs[49:72,1,1])) 
# ...... 
a30 = (np.sum(bin_mask_arrs[697:720,1,1])) 

# and then put everything together: 

list1 = (a1,a2,a3,.....,a30) 

回答

0

,而不是A1,A2,A3 ...... A30,使用列表理解,如:

a = [np.sum(bin_mask_arrs[x*24:(x+1)*24,1,1]) for x in range(30)] 
# 'list1' in your code is same as 'a' 

而且,你的片是不正確的,他們需要是0:24,24:48,48:72 ... 696:720

+0

哦你的權利!完美的作品,謝謝你:-) – Hannah

0

正如你所寫的非循環代碼,解決方案非常直rward。

list1 = [np.sum(bin_mask_arrs[i * 24:i * 24 + 24, 1, 1]) for i in range(30)] 

希望這是你問的

+0

謝謝!這完美地工作:-) – Hannah