首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python中高效地执行大型矩阵的网格搜索?

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

Stack Overflow用户
提问于 2014-02-16 08:49:37
回答 1查看 384关注 0票数 1

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

现在,我正在做如下操作:

代码语言:javascript
复制
# 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矩阵,这意味着(100选择8) =1860亿个可能的子矩阵。

有没有什么方法可以让我更快地完成这个过程?或者这是一个非常难解决的问题?

EN

回答 1

Stack Overflow用户

发布于 2014-02-16 09:00:29

代码语言:javascript
复制
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

使用scipy.ndimage的generic_filter解决方案

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21805827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档