0
Numpyを使用してサブマトリックスを計算しようとしました。Numpyサブマトリックス(ランダムインデックス選択)
マトリックスの形状である
A:(15000 100)
B:(15000 100)
B_(3000、100)
C:(100 、100)
sample_index = np.random.choice(np.arange(int(15000*0.2)), size=int(int(15000*0.2)), replace=False)
と最初のコードは
01のみsample_index及び第二のコードからスライスされたサブ行列を使用
for ki in range(100):
self.A[sample_index, k] += B_[:, k] - np.dot(self.A[sample_index, : ], C[:, k])
すべての行列を使用
for k in range(100):
self.A[:, k] += B[:, k] - np.dot(self.A[:, : ], C[:, k])
あります。
しかし、最初のコードの計算時間は2番目のコードよりも遅いです。
スピードアップの理由や解決方法をご存知ですか?
代わりに 'A [:3000、k]'を試してください。スライスされた索引付けは、配列索引付け(基本v高度索引付け)よりも高速です。 – hpaulj
「k」の外観はどうですか?なぜ、A [:、:] + = B - np.dot(A、C) 'ではないのですか? – hpaulj
実際には、random index sample_index = np.random.choice(np.arange(int(15000 * 0.2))、size = int(15000 * 0.2)、replace = False)を選択します。 と sample_index = np。 arange(int(15000 * 0.2))はテスト用です – Kyeongpil