Python pickle:Can';t pickle<;类别';内部线性分相器'>;:它';找不到作为INTERPAND.LinearNDInterpolator的

Python pickle:Can';t pickle<;类别';内部线性分相器'>;:它';找不到作为INTERPAND.LinearNDInterpolator的,python,interpolation,pickle,Python,Interpolation,Pickle,我对Python中的Pickle模块有一个问题。我想插值一些4参数数据,所以我想构建并存储插值器,这样它就可以在另一个代码中重用,而不必在执行时重新生成。实际上,每次执行代码时,我都会浪费大量时间重新创建它。 我所能得到的只是这条信息: “PicklingError:无法pickle: 找不到Interpand.LinearNDInterpolator“ 我正在绞尽脑汁想办法解决它,这是我代码的简化版本(PythonV2.7),回溯如下 提前感谢您的建议 a1,a2,a3,a4 = np.mgr

我对Python中的Pickle模块有一个问题。我想插值一些4参数数据,所以我想构建并存储插值器,这样它就可以在另一个代码中重用,而不必在执行时重新生成。实际上,每次执行代码时,我都会浪费大量时间重新创建它。 我所能得到的只是这条信息:

“PicklingError:无法pickle: 找不到Interpand.LinearNDInterpolator“

我正在绞尽脑汁想办法解决它,这是我代码的简化版本(PythonV2.7),回溯如下 提前感谢您的建议

a1,a2,a3,a4 = np.mgrid[paramvariation]
pts = np.array([a1.ravel(),a2.ravel(),a3.ravel(),a4.ravel()]).T
sr=paramvalues.ravel()
LinearNDInterp = interp.interpnd.LinearNDInterpolator(pts,sr,fill)

fileid=open("try.out",'w')
pickle.dump(LinearNDInterp,fileid) 
fileid.close()

Traceback (most recent call last):
File "<ipython console>", line 1, in <module>
File "C:\Python27\lib\site-packages\spyderlib\widgets\externalshell\startup.py", line 128, in runfile
execfile(filename, glbs)
File "tryout.py", line 516, in <module>
main("")
File "tryout.py", line 354, in main
pickle.dump(LinearNDInterp,fileid)
File "C:\Python27\lib\pickle.py", line 1370, in dump
Pickler(file, protocol).dump(obj)
File "C:\Python27\lib\pickle.py", line 224, in dump
self.save(obj)
File "C:\Python27\lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "C:\Python27\lib\pickle.py", line 401, in save_reduce
save(args)
File "C:\Python27\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Python27\lib\pickle.py", line 562, in save_tuple
save(element)
File "C:\Python27\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Python27\lib\pickle.py", line 748, in save_global
(obj, module, name))
PicklingError: Can't pickle <class 'interpnd.LinearNDInterpolator'>: it's not found as interpnd.LinearNDInterpolator
a1、a2、a3、a4=np.mgrid[paramvariation]
pts=np.array([a1.ravel(),a2.ravel(),a3.ravel(),a4.ravel()]).T
sr=paramvalues.ravel()
LinearNDInterp=内部接口LinearNDInterpolator(pts、sr、fill)
fileid=open(“try.out”,“w”)
pickle.dump(LinearNDInterp,fileid)
fileid.close()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“C:\Python27\lib\site packages\spyderlib\widgets\externalshell\startup.py”,第128行,在runfile中
execfile(文件名,glbs)
文件“tryout.py”,第516行,在
主要(“”)
文件“tryout.py”,主目录第354行
pickle.dump(LinearNDInterp,fileid)
文件“C:\Python27\lib\pickle.py”,第1370行,在转储中
Pickler(文件,协议).dump(obj)
文件“C:\Python27\lib\pickle.py”,第224行,位于转储文件中
自我保存(obj)
文件“C:\Python27\lib\pickle.py”,第331行,保存
自我保存(obj=obj,*rv)
文件“C:\Python27\lib\pickle.py”,第401行,在save\u reduce中
保存(args)
文件“C:\Python27\lib\pickle.py”,第286行,保存
f(self,obj)#用显式self调用未绑定方法
文件“C:\Python27\lib\pickle.py”,第562行,在save\u元组中
保存(元素)
文件“C:\Python27\lib\pickle.py”,第286行,保存
f(self,obj)#用显式self调用未绑定方法
文件“C:\Python27\lib\pickle.py”,第748行,在save\u global中
(对象、模块、名称))
PicklingError:无法pickle:找不到interpnd.LinearNDInterpolator

看起来像是SciPy中最近修复的错误:

简单的解决方法就是对
LinearNDInterpolator的参数进行pickle处理

谢谢,我已经按照此错误评论中强调的更正进行了操作,但错误仍然存在。。。并且修改后的文件generate_interpand根本不会执行。。。我遗漏了什么吗?看起来像是在构建过程中执行的文件。我已经对参数进行了pickle处理,但这并不能解决问题:插值器必须在每次执行时使用这些参数重新生成