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]
有什麼辦法可以改進我附在下面的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]
只需添加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
,以便以矢量化方式獲得所需的輸出。
酷!太棒了! – xxx222
這段代碼是如何工作的,因爲如果d