我试图在一些用户定义的,连续的2D x,y位置插值一个2D函数的值,它定义在一个普通的笛卡尔网格(i,j)上。scipy interp2d崩溃无法分配内存,任何替代?
我试过的是使用scipy.interpolate函数interp2d来获得一个函数,通过插入一个适当的模型,返回f(x,y)的值。
看到该文档:
http://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.interp2d.html
下面的代码重新,我有一个错误。似乎interp2d崩溃,因为它不能分配那么多的内存。
任何想法如何做到这一点,否则呢?
import scipy.interpolate as interp
import numpy as np
def main():
x = np.arange(4098)/4097.
z = np.arange(1602)/1601.
xx,zz = np.meshgrid(x,z)
f = np.sin(xx**2 + zz**2)
ff = interp.interp2d(x,z,f, kind='linear')
if __name__ == '__main__':
main()
您是否正在使用上面显示的代码来获取错误,以及这些尺寸数组?你有多少内存? 'f','xx'和'zz'每个都小于54兆字节。 “interp2d”应该没有问题。 – 2013-04-10 15:00:11
我在上面贴出的代码有错误,这些尺寸是。我得到这个错误: 1.0 1.0 (1602,4098)(1602,4098) (1602,4098) 的Python(25673)的malloc:*** MMAP(大小= 18446744062377512960)失败(错误代码= 12) ***错误:不能分配区域 – MCF 2013-04-10 16:17:04
那里有什么严重错误,我不认为它是interp2d。你在使用什么操作系统? 32或64位?你是如何安装numpy和scipy的? – 2013-04-10 16:43:37