为前7个numpy数组的平均值创建新数组

时间:2016-01-14 22:25:52

标签: python numpy

我已经将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,那么我只想平均我之前可以获得的平均值。

谢谢!

2 个答案:

答案 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个