Python 为什么scipy.interpolate.griddata速度如此之慢?
我试图使用Python 为什么scipy.interpolate.griddata速度如此之慢?,python,numpy,scipy,interpolation,Python,Numpy,Scipy,Interpolation,我试图使用scipy.interpolate.griddata在常规网格上非的约400000个数据点之间进行插值。然而,我似乎永远都无法让它跑完!我试图在网格上200x200(~40000)个数据点上插值函数的值。下面是我发出的函数调用: 我已经查看了从load\u data输出的数据,似乎一切都加载得很好。raw_x_val、raw_y_val和raw_z_val的维度为(410500,)。我让它运行了大约半个小时,但它从未真正结束! 或者,我尝试在MATLAB中运行一组非常类似的函数调用,
scipy.interpolate.griddata
在常规网格上非的约400000个数据点之间进行插值。然而,我似乎永远都无法让它跑完!我试图在网格上200x200(~40000)个数据点上插值函数的值。下面是我发出的函数调用:
我已经查看了从load\u data
输出的数据,似乎一切都加载得很好。raw_x_val
、raw_y_val
和raw_z_val
的维度为(410500,)
。我让它运行了大约半个小时,但它从未真正结束!
或者,我尝试在MATLAB
中运行一组非常类似的函数调用,我能够在大约2秒钟内加载并插值所有内容
我是否在python中做了一些错误的事情,或者仅仅是
scipy.interpolate.griddata
函数不用于处理此类数据。或者,你们中的任何人都会对我可以使用哪些函数/库来实现这一点提出建议。理想情况下,我不想在MATLAB
中执行此操作,我建议从问题中删除标记,因为您不需要该语言的答案。不过我可以告诉你,MATLAB可以在griddata
中轻松处理4000k个数据点,谢谢,我已经修复了它!MATLAB似乎在处理数据方面没有问题,我正试图用开源代码对我的数据进行分析,这样我就可以将程序分发给其他人。奇怪的是,scipy v0.14的文档中说,griddata()
包含3个位置参数,而您只有两个。您使用的是什么版本?现在已经清除了,是否可以添加到数据集的链接?以及指定min_interp_val
和max_interp_val
适合您的内容,以便其他人可以重现该问题。现在看起来更像样了,我猜你的scipy安装不正常。也许考虑重新安装SISPY?我从<代码> GRIDATAL()/<代码> DOC测试了一个修改的示例,其中410500个点被插入到一个200×200的网格中。在我的机器上,griddata()
调用需要4秒钟。你能试着运行它并告诉我你需要多长时间吗?我建议从问题中去掉标签,因为你不想用那种语言回答。不过我可以告诉你,MATLAB可以在griddata
中轻松处理4000k个数据点,谢谢,我已经修复了它!MATLAB似乎在处理数据方面没有问题,我正试图用开源代码对我的数据进行分析,这样我就可以将程序分发给其他人。奇怪的是,scipy v0.14的文档中说,griddata()
包含3个位置参数,而您只有两个。您使用的是什么版本?现在已经清除了,是否可以添加到数据集的链接?以及指定min_interp_val
和max_interp_val
适合您的内容,以便其他人可以重现该问题。现在看起来更像样了,我猜你的scipy安装不正常。也许考虑重新安装SISPY?我从<代码> GRIDATAL()/<代码> DOC测试了一个修改的示例,其中410500个点被插入到一个200×200的网格中。在我的机器上,griddata()
调用需要4秒钟。你能试着运行一下,告诉我你需要多长时间吗?
from scipy.interpolate import griddata
import numpy as np
#Load in all the data
[raw_x_val,raw_y_val,raw_z_val] = load_data('filename')
#Generate interpolating mesh
[x_interp,y_interp] = np.meshgrid(np.linspace(min_interp_val,max_interp_val,200),np.linspace(min_interp_val,max_interp_val,200))
z_interp = griddata((raw_x_val,raw_y_val),raw_z_val,(x_interp,y_interp),method='linear')