3

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 秒しかかからないことがわかります。したがって、ループとは何の関係もないはずです =/

4

1 に答える 1