ちょうど2つのネストされたループがPythonで非常に遅いことが分かりました。 CPU負荷は約0%のままですが、それでも速度は遅くなります。どうして?どうすれば修正できますか?ネストされたループの動作が遅すぎる
初期化(それは、高速動作させるために、それをコメントするべきではありません):
a = imresize(image, (maxY, maxX), 'lanczos')
b = imresize(image, (maxY * 2, maxX), 'lanczos')
スローコード:
result = np.empty((maxY, maxX, 3), dtype=np.uint16)
for y in range(maxY):
for x in range(maxX):
result[y, x] = [a[y, x], a[y, x], a[y, x]]
そして、この1つは、より遅く動作します:
result = np.empty((maxY, maxX, 3), dtype=np.uint16)
for y in range(maxY):
for x in range(maxX):
result[y, x] = [a[y, x], b[y*2, x], b[y*2+1, x]]
同じ結果を達成するための他のより効果的なコードはありますか?
aの形状は(299,29)、b-(598,299)、結果 - (299,29,3)である。私はコードを約5000回呼び出す(そして、その量のデータについては約10分待つ)。
私が提供したコードにコメントすると、すべてがちょうど2番目にとなります。
1)アルゴリズムを修正する、2)numpyを使用する、3)CPythonを使用するすべてのオプションです。より多くの情報がなければ、何も言うのは難しい –
これらの変数やCPU負荷評価に関する情報はありません。 – sascha
常に、*常に*、**常に** NumPyは、配列。 – o11c