使用numpy沿4D数组的第1轴平均n个元素

时间:2020-05-15 18:37:26

标签: python-3.x numpy

我有一个4D数组,其中包含具有不同形状(年,日,x坐标,y坐标)的不同年份的网格数据的每日时间序列。我的数组的实际形状是(19,133,288,620),所以我有19年的数据,每年在288 x 620网格上有133天。我想取记录期间每个网格单元的每周平均值。每周平均数组的形状应为(19、19、288、620)或(年,周,x坐标,y坐标)。我想用numpy实现这一点。

在这里,我构造了一些虚拟数据以供使用,并给出了解决方案的数组:

if __name__ == "__main__":

    app = QApplication(sys.argv)
    ex = Example()
    w = QScrollArea(widgetResizable=True)
    w.setWidget(ex)
    w.show()
    sys.exit(app.exec_())

dummy_data的形状为(2、14、3、3)。根据虚拟数据,我在3 X 3网格上有两年的数据,每年14天。我想返回两年的网格每周平均值,从而得出形状为(2,2,3,3)的解决方案。

1 个答案:

答案 0 :(得分:1)

您可以重塑并取平均值:

week_mean = dummy_data.reshape(2,-1,7,3,3).mean(axis=2)
# in your case .reshape(year, -1, 7, x_coord, y_coord)

# check:
(dummy_data.reshape(2,2,7,3,3).mean(axis=2) == solution).all()
# True