【发布时间】:2011-09-25 12:56:17
【问题描述】:
作为复杂任务的一部分,我需要计算 matrix cofactors。我使用nice code for computing matrix minors 以一种简单的方式做到了这一点。这是我的代码:
def matrix_cofactor(matrix):
C = np.zeros(matrix.shape)
nrows, ncols = C.shape
for row in xrange(nrows):
for col in xrange(ncols):
minor = matrix[np.array(range(row)+range(row+1,nrows))[:,np.newaxis],
np.array(range(col)+range(col+1,ncols))]
C[row, col] = (-1)**(row+col) * np.linalg.det(minor)
return C
原来这个矩阵辅因子代码是瓶颈,我想优化一下上面的代码sn-p。关于如何做到这一点的任何想法?
【问题讨论】:
-
一般的bottleneck-killer是用C写瓶颈。这里有技术人员吗?
-
想详细说明为什么需要计算“辅因子”?是否有可能避免它并尝试为您的问题找到更直接的解决方案?即使遵循
borribles 的建议,你也不会接近这样的加速,从“适当的角度”(如果可能的话)解释问题时可能会发生什么。谢谢 -
@eat,无法避免它们。太复杂了,这里就不解释了……
-
@Jeff:请注意,根据
pvs 的回答,存在一个真正的障碍,你不能指望超越。因此,只有算法上的“创新”才能真正让你走得更远(至少在性能方面)。谢谢 -
如果您尝试计算行列式,最好的方法是关键凝聚的 chio 规则。
标签: python matrix performance numpy linear-algebra