【发布时间】:2016-10-12 20:30:27
【问题描述】:
如何在 python 中加快这段代码的速度?
while ( norm_corr > corr_len ):
correlation = 0.0
for i in xrange(6):
for j in xrange(6):
correlation += (p[i] * T_n[j][i]) * ((F[j] - Fbar) * (F[i] - Fbar))
Integral += correlation
T_n =np.mat(T_n) * np.mat(TT)
T_n = T_n.tolist()
norm_corr = correlation / variance
这里,TT是固定的6x6矩阵,p是固定的1x6矩阵,F是固定的1x6矩阵。 T_n 是 TT 的 n 次方。
这个 while 循环可能会重复 10^4 次。
【问题讨论】:
-
您是否有理由希望
T_n成为列表列表而不是 numpy 矩阵? -
您能否提供一些关于 TT、p、F 和 T_n 的示例数据。这将是一个易于测试的工作示例(当然,我们可以创建自己的随机矩阵,但另一种方式是您的代码将是复制和粘贴可执行文件(如果您还包括导入......)。
-
您可能还想在Code Review上提问
-
您是否尝试过运行分析器来查看代码的哪一部分速度较慢? docs.python.org/3/library/profile.html
-
大约一半的计算时间被嵌套循环消耗,另一半被矩阵乘法消耗。
标签: python performance loops