【发布时间】:2017-07-05 17:37:35
【问题描述】:
我有一种情况正在尝试解决。我在一个数组中有气候模型数据,在这个模型的纬度和经度网格点上有 480 个每月条目(细节无关紧要)。也就是说,我有一个尺寸为 (480, lat, lon) 的 numpy 数组。
我需要在每个空间网格点创建年度平均值。我希望喜欢这样做的方法是使用numpy.reshape() 创建一个尺寸为 (480/12, 12, lat, lon) 的 4D 数组(我将时间步分为 12 组和重新堆叠它们,就像它一样)。然后我将沿第二个轴平均 (np.mean(dat_new, axis = 1))。
整个事情就是
dat_new = np.reshape(dat, (dat.shape[0]/12, 12, dat.shape[1], dat.shape[2]))
dat_annual_mean = np.mean(dat_new, axis = 1)
我的问题是:重塑是否以这种方式工作?它会以正确的顺序重新排列事物吗?如果没有(或者即使是这样),还有另一种(可能不太笨拙的方法吗?)
谢谢。
【问题讨论】:
-
对我来说看起来不错,但我会使用:
dat.shape[0]//12或只是-1让它决定剩余的长度。 -
用一个小数组进行实验,您可以在其中看到值的布局,例如
arr = np.arange(6*2).reshape(6,2,1)。reshape(3,2,2,1)看起来对吗? -
@hpaulj 不,它没有,但老实说,只是指出它不起作用而不建议替代方案并没有真正帮助我
-
我们正在尝试找出您想要什么样的安排。如果重塑不起作用,您可能需要转置/交换轴。但是没有具体的例子,我们只是猜测。
-
如果我理解正确,您有一个形状数组 (480, 3),即一个数据点的 480 个测量值以及相关的纬度和经度。或者你有一个完美的纬度/经度组合网格吗?
标签: python arrays numpy reshape