2016-07-24 65 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