Cómo evaluar la suma de valores dentro de bloques de matriz
Tengo una matriz de datos, con forma de 100x100. Quiero dividirlo en bloques de 5x5, y cada bloque tiene cuadrículas de 20x20. El valor de cada bloque que quiero es la suma de todos los valores que contiene.
¿Hay alguna forma más elegante de lograrlo?
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])
Esto se basa en el índice, ¿y si se basa en 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_nuevo?