【发布时间】:2016-04-03 08:16:59
【问题描述】:
我有数据数组,形状为 100x100。我想把它分成 5x5 的块,每个块有 20x20 的网格。我想要的每个块的值是其中所有值的总和。
有没有更优雅的方式来完成它?
x = np.arange(100)
y = np.arange(100)
X, Y = np.meshgrid(x, y)
Z = np.cos(X)*np.sin(Y)
Z_new = np.zeros((5, 5))
for i in range(5):
for j in range(5):
Z_new[i, j] = np.sum(Z[i*20:20+i*20, j*20:20+j*20])
这是基于index的,如果基于x呢?
x = np.linspace(0, 1, 100)
y = np.linspace(0, 1, 100)
X, Y = np.meshgrid(x, y)
Z = np.cos(X)*np.sin(Y)
x_new = np.linspace(0, 1, 15)
y_new = np.linspace(0, 1, 15)
Z_new?
【问题讨论】:
-
对于任意维度的解决方案:stackoverflow.com/questions/36269508/…
-
@ajcr 我重新打开它是因为重复链接的问题将涉及为通用 ndarray 案例设置的相当大的开销,而解决这样的案例不需要。希望这听起来不错。