3

我正在开发一个使用NumPyand的 Python 项目SciPy。我有以下内容:

x = numpy.arange(-5,5,0.01)
y = numpy.arange(-5,5,0.01)

x我也有这样的y功能

# fxy = function of x and y in a grid
# fxy.shape = (y.shape[0], x.shape[0])

我想进行插值fxy,使函数值位于x或分开的y点,0.00010.001我想评估函数fxy

finer_x = numpy.arange(-5,5,0.0001)
finer_y = numpy.arange(-5,5,0.0001)

# finer_fxy = function of finer_x and finer_y in a grid
# finer_fxy.shape = (finer_y.shape[0], finer_x.shape[0])

我一直在尝试使用bisplrepandinterp2d函数,scipy.interpolate但我得到了

File "/usr/lib/python2.7/dist-packages/scipy/interpolate/fitpack.py", line 873, in bisplrep
tx,ty,nxest,nyest,wrk,lwrk1,lwrk2)
MemoryError

OverflowError: Too many data points to interpolate

分别使用这些功能。创建插值数据的最佳方法是什么?

4

2 回答 2

3

显然,你在你的 NumPy 盘子上加了太多分,很抱歉听到这个消息。

我的建议是首先绘制你的数据,找到相对线性的区域,然后跳过它们。也就是说,尝试将您的数组分解为不同的区域,并执行分段插值。

于 2012-09-03T18:03:56.827 回答
1

您的数据位于常规网格上:尝试使用 RectBivariateSpline。

bisplrep/interp2d 用于分散数据。

于 2012-09-13T20:00:39.430 回答