我已经将NetCDF转换为numpy数组(x,y,z),其中x = time。在过去的7倍中,我需要在每个y,z位置获得平均值并将其存储在新数组中。
例:阵列(2,2,2)
array([[[1,2],
[2,3]],
[[4,5],
[7,9]]])
在每个时间步(x)中,我需要为每个y,z选项平均过去7天并将其存储在新矩阵中。所以在上面的例子中,x = 0只是[[1,2],[2,3]]
,因为你不能回到过去,但x = 1将是[[1&4,2&5],[2&7,3&9]]
的平均值。
如果数组x <7,那么我只想平均我之前可以获得的平均值。
谢谢!
答案 0 :(得分:1)
你是说这个吗?
a = np.array([[[1,2],
[2,3]],
[[4,5],
[7,9]]])
print a.mean(axis=0)
# array([[2.5, 3.5],
# [4.5, 6.]])
答案 1 :(得分:1)
一个简单而明确的解决方案,虽然可能不是最高效的解决方案,但是:
[np.mean(a[max(i-6, 0):i+1,:], axis=0) for i in xrange(len(a))]
你会得到一个numpy数组列表,其中每个数组是索引当天的平均矩阵和前面的6个