如何在循环中使用3D矩阵总结特定切片?

时间:2017-09-25 07:39:56

标签: python loops

我有一个带有切片,行和列的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)

2 个答案:

答案 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)]

希望这是你要求的