是否有任何便利工具在Numpy阵列上进行块运算?
我正在考虑像Ising自旋重整化这样的操作,其中将矩阵划分为块并返回矩阵,其中每个块由其和,平均或其他函数替换.
我想对块矩阵(或更一般地在 d-dim nd.array 上)执行一些简单的计算。像这样的东西:
图中,大写字母代表一个3×3的块矩阵,小写字母代表数字(块矩阵的均值或总和)。
目前,我只知道如何使用 for 循环来做到这一点
import numpy as np
test_matrix = np.arange(81).reshape(9,9)
a = np.zeros((3,3))
for i in range(3):
for j in range(3):
a[k,i,j] = test_matrix[3*i:3*(i+1),3*j:3*(j+1)].mean()
print a
Run Code Online (Sandbox Code Playgroud)
但是如果我的矩阵变大或多维,它会变慢,例如:
test_matrix = np.arange(81*2).reshape(2,9,9)
a = np.zeros((2,3,3))
for k in range(2):
for i in range(3):
for j in range(3):
a[k,i,j] = test_matrix[k,3*i:3*(i+1),3*j:3*(j+1)].mean()
print a
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来执行此类任务?
非常感谢!!