【问题标题】:How to improve the performance of this Python code?如何提高此 Python 代码的性能?
【发布时间】:2016-11-27 21:49:21
【问题描述】:

有什么方法可以改进我在下面附加的 Python 代码吗?现在对我来说似乎太慢了。

C_abs = abs(C)
_, n = C_abs.shape

G = np.zeros((n, n))
for i in xrange(n):
    for j in xrange(n):
        G[i,j] = C_abs[i,j]+C_abs[j,i]

【问题讨论】:

  • 如果 d

标签: python performance numpy scipy


【解决方案1】:

只需添加C_abs 及其transposed version -

G = C_abs + C_abs.T

要理解,看代码的计算部分:

G[i,j] = C_abs[i,j]+C_abs[j,i]

右侧的第一个输入是C_abs[i,j],它包含与赋值左侧相同的迭代器 - G[i,j]。因此,对于矢量化解决方案,我们将原样使用它作为第一个输入。右侧的第二个输入是C_abs[j,i],它的迭代器是左侧迭代器的翻转版本 - G[i,j]。整个数组上下文中的这种翻转将是C_abs 的转置。因此,综合起来,我们将添加 C_abs 及其自己的转置版本,以矢量化的方式获得所需的输出。

【讨论】:

  • 酷!太棒了!
猜你喜欢
  • 2016-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-16
  • 1970-01-01
  • 1970-01-01
  • 2016-06-20
  • 2016-01-14
相关资源
最近更新 更多