0
2D平面で2つのインデックスを合計しなければならず、空間の各点で関数の値を取得する必要があります。私のpythonプログラムをより効率的にする
私がそれを行う方法を知っている最も簡単な方法と唯一の方法は、4 forループです。それはうまくいくが、それは非常に遅い。あなたはそれをより速くする方法を訴えていますか?
"size"は私が使用しているステップを定義しており、私のシステムのサイズは任意の単位であり、 "n_0"はリストのリストであり、yの座標xに依存する入力パラメータです。
for x in range(size):
for y in range(size):
for x_ in range(size):
for y_ in range(size):
if x == x_ and y == y_:
pass
else:
value = n_0[x][y] * N/math.sqrt((x - x_)**2 + (y - y_)**2)
print(value)
編集:私は私の問題は私の構文でより簡潔されていないので、これは重複をマークした理由を知りません。私の問題は、構文が何であってもコードがO(n^4)であり、これを減らす必要があることです。 Pythonの2.xのxrangeについては
を取るので、あなたが任意の座標を無視している(ビット)
より
を行うには高速ですが、あなたの座標_outside_座標系の 'range(size)'チェックのシステムは?また、「N」は何と定義されていますか? –
多分助けにはならないかもしれませんが、平方根を計算して手動で計算するのではなく、math.hypotを考慮する必要があります。 – guidot
典型的な 'size'の大きさはどれくらいですか?計算を速く実行できるのでnumpyを使用することをお勧めしますが、ベクトルをメモリに格納する必要があります –