2016-07-24 32 views
4

有什么办法可以改进我附在下面的Python代码?现在对我来说似乎太慢了。如何提高此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] 
+0

这段代码是如何工作的,因为如果d

回答

6

只需添加C_abstransposed 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,以便以矢量化方式获得所需的输出。

+0

酷!太棒了! – xxx222