1000 x 1000 グリッドで scipy.interpolate.griddata を補間します。1,000 個の (x,y,z) 値を持つ点群がある場合、計算には数秒しかかかりません。しかし、今では 1,000,000 の値があります。そこで、次のように、これらの 1,000,000 個の値から 1,000 個の値を抽出するループを作成しました。
p = [...]
z = [...]
#p and z are my lists with 1,000,000 values
p_new = []
z_new = []
for i in range(1000000):
if condition:
#condition is True for about 1000 times
p_new.append(p[i])
z_new.append(z[i])
print 'loop finished'
points = np.array(p_new)
values = np.array(z_new)
grid_z1 = griddata(points, values, (grid_x, grid_y), method='cubic')
plt.imshow(grid_z1.T, origin='lower')
plt.show()
print len(p_new)
me1000
を返すので、ループは期待どおりに機能します。しかし、ループが終了した後、何も起こらなかったため、15 分間待機した後、プログラムをキャンセルしました。
最後に、私の質問は次のとおりです。どちらの場合も (デフォルトで 1000 個の値と 1000000 個からそれらを抽出する 1000 個の値)、同じ数の値があるのに、なぜこの計算に時間がかかるのですか? 私の出力loop finished
では、ループには約 10 秒しかかからないことがわかります。したがって、ループとは何の関係もないはずです =/