plan
以下のコードは正しい答えを示していますが、配列 (およびmeas
) が比較的小さい場合にのみ機能します。実際に比較する必要がある配列(それぞれ300x300)でこれを実行しようとすると、永遠にかかります(45分後に終了しているため、どれくらい時間がかかるかわかりません)。評価されるインデックスの周囲の配列値 ( p
)。nditer フラグに関するドキュメントを見つけようとしました'ranged'
が、反復する特定の範囲を実装する方法が見つかりません。
p = np.nditer(plan, flags = ['multi_index','common_dtype'])
while not p.finished:
gam_store = 100.0
m = np.nditer(meas, flags = ['multi_index','common_dtype'])
while not m.finished:
dis_eval = np.sqrt(np.absolute(p.multi_index[0]-m.multi_index[0])**2 + np.absolute(p.multi_index[1]-m.multi_index[1])**2)
if dis_eval <= 6.0:
a = (np.absolute(p[0] - m[0]) / maxdose) **2
b = (dis_eval / gam_dist) **2
gam_eval = np.sqrt(a + b)
if gam_eval < gam_store:
gam_store = gam_eval
m.iternext()
gamma = np.insert(gamma, location, gam_store, 0)
location = location + 1
p.iternext()