以下に添付する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]
ただ、そのtransposed version
でC_abs
を追加 - コードの演算部を見て、理解するために
G = C_abs + C_abs.T
:
G[i,j] = C_abs[i,j]+C_abs[j,i]
右側の最初の入力がC_abs[i,j]
あり、代入の左側に同じ反復子が含まれています - G[i,j]
。したがって、ベクトル化されたソリューションでは、最初の入力としてそのまま使用します。右側の2番目の入力はC_abs[j,i]
であり、そのイテレータは左側のイテレータの反転バージョンです - G[i,j]
です。配列全体のコンテキストにおけるこの反転は、C_abs
の転置になります。したがって、まとめて、C_abs
に独自の転置バージョンを追加して、ベクトル化された方法で目的の出力を取得します。
クール!それは素晴らしいです! – xxx222
d