重み行列の値から始まる行列を作成する必要があります。マトリックスを作成するときと反復するときの両方の速度の観点から、マトリックスを保持するのに最適な構造はどれですか? リストのリストまたはnumpy 2D配列について考えていましたが、どちらも遅いようです。必要なもの:
numpy array
A = np.zeros((dim, dim))
for r in range(A.shape[0]):
for c in range(A.shape[0]):
if(r==c):
A.itemset(node_degree[r])
else:
A.itemset(arc_weight[r,c])
また
list of lists
l = []
for r in range(dim):
l.append([])
for c in range(dim):
if(i==j):
l[i].append(node_degree[r])
else:
l[i].append(arc_weight[r,c])
ここで、dim は 20000 にすることもできます。node_degree はベクトルで、arc_weight は別の行列です。私はC ++で書きました.0.5秒未満しかかかりませんが、他の2つはPythonで20秒以上かかります. Python が C++ ではないことは知っていますが、できるだけ速くする必要があります。皆さん、ありがとうございました。