我试图优化一个函数,该函数从给定所需成员的完全协方差矩阵中返回子协方差矩阵。完整的协方差矩阵可以包含500+个项目,我可以每次查看可变数量的成员,但每次调用可能不超过20个。它被调用10000多次。你知道吗
我的代码工作,但我想知道如何优化它。你知道吗
def subcovar(covar,elements):
numelements = elements.shape[0]
subcovar = np.zeros((numelements,numelements))
for i in range(0,numelements):
for j in range(0,numelements):
subcovar[i,j]= covar[elements[i],elements[j]]
return subcovar
谢谢 保罗
为什么不使用矩阵切片?[offical python docs]
下面是一个通过提取任意(即非连续)行和列来构建子矩阵的SO线程 Slicing of a numpy 2d array, or how do I extract an mxm submatrix from an nxn array (n>m)
根据迈克的回答,我回去查看切片,发现如下:
旧路时间=0.016201255250881966秒,从500x500中选择20x20
新路时间=0.0016199544633708396秒,从500x500中选择20x20
快10倍
旧路时间=0.09903732167528723秒,从500x500中选择50x50
新路时间=0.0022922701258387秒,从500x500中选择50x50
快43倍
旧路时间=2.669313751708479秒,从500x500中选择250x250
新路时间=0.003080821529599664秒,从500x500中选择250x250
快866倍
老路
def子胶囊(covar,元素):
纽威
def subcovarnew(covar,元素):
谢谢 保罗
相关问题 更多 >
编程相关推荐