如何在Python中高效地对大型矩阵执行网格搜索?

2024-10-06 10:33:25 发布

您现在位置:Python中文网/ 问答频道 /正文

给定一个nxn矩阵a(它实际上是一个图的邻接矩阵),我需要查看该矩阵的所有可能的mxm子矩阵(在本例中为m=8),并将子矩阵传递给函数并收集其结果。在

现在,我要做的是:

# generate all possible 8x8 submatrices 
for w in itertools.combinations(range(n), m):
         # extract 8x8 submatrix from the matrix
         submatrix = A[np.ix_(list(w),list(w))]
         # do some work on the submatrix
         foo(submatrix)

问题是:上面的代码在n=30x30矩阵(大约有500万个m=8x8子矩阵需要搜索)下工作得很好。但是,我想将我的算法应用到n=100x100个矩阵上,这意味着(100choose8)=1860亿个可能的子矩阵。在

有什么可以让我更快完成这个过程的吗?或者这是一个难以解决的问题?在


Tags: the函数infor矩阵allgeneratelist
1条回答
网友
1楼 · 发布于 2024-10-06 10:33:25
import numpy as np
from scipy.ndimage import generic_filter

m = np.arange(100*100).reshape((100,100))

def myfunction(data):
    mean = np.mean(data)
    return mean 

%timeit results = generic_filter(m, myfunction, size=8)
#10 loops, best of 3: 96.6 ms per loop

使用generic_filter的scipy.n图像在

相关问题 更多 >