我在 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)
返回 me 1000
,所以我的循环按预期工作。但是在我的循环完成后,我在等待 15 分钟后取消了我的程序,因为什么也没发生。
所以最后我的问题是:尽管在这两种情况下(默认情况下为 1000 个值和从 1000000 中提取它们的 1000 个值)我有相同数量的值,为什么要花这么长时间?在我的输出loop finished
中,我可以看到循环只需要大约 10 秒,所以它应该与我的循环无关 =/