【问题标题】:Numpy: using np.mean in 3 dimensionsNumpy:在 3 维中使用 np.mean
【发布时间】:2014-12-08 23:54:39
【问题描述】:

我有 140 个数组,尺寸为 734 x 1468。我需要 734 x 1468 条目中 140 个数组的平均值,我首先使用嵌套的 for 循环遍历数据,但这太慢了。我试过使用np.mean 函数

res = np.mean([megadatalist[i].variables['analysed_sst'][0] for i in range(0,140)], axis=2)

res.shape 给出 (140, 734)

我需要尺寸 734、1468 的结果

megadatalist 包含 140 个 netCDF 文件。

【问题讨论】:

  • 试试axis=0 而不是axis=2
  • 哦,天哪,这似乎有效,现在我觉得很愚蠢:D
  • 别觉得自己笨。在使用 NumPy 时,混淆轴是正常的一部分。

标签: python numpy mean dimensions netcdf


【解决方案1】:

您正在传递一个转换为 (140,734,1468) 的数组列表。所以要么你使用如下所示的 np.dstack,要么你可以改变axis=0

np.dstack:

X = np.dstack([megadatalist[i].variables['analysed_sst'][0] 
        for i in range(0,140)])

res = np.mean(X, axis=2)

【讨论】:

  • 这很有意义。有用!直到现在才知道 Dstack,真是太聪明了,非常感谢!
  • "您传递的是数组列表而不是 3D 数组" (140, 734, 1468) 的数组。这里只需将axis=2 更改为axis=0
  • @MarkDickinson,从某种意义上说,数组转换为 (D,H,W) 而不是 (H,W,D) 确实很重要。无论如何,两种解决方案都很好。我编辑了答案以将两者都考虑在内。
猜你喜欢
  • 2013-12-01
  • 2019-09-11
  • 1970-01-01
  • 2014-05-23
  • 1970-01-01
  • 1970-01-01
  • 2016-11-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多