我有一个带有切片,行和列的3D矩阵。它有720片。
我想总结前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 :(得分: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
答案 1 :(得分:0)
在编写非循环代码时,解决方案非常简单。
list1 = [np.sum(bin_mask_arrs[i * 24:i * 24 + 24, 1, 1]) for i in range(30)]
希望这是你要求的