我尝试过用各种插值方法运行scipy1d插值(interp1d)。数据是一个包含525600个数字的数组。当我用“linear”、“nearest”或“zero”等更简单的方法运行它时,它运行得很好,但是当我使用“cubic”或“quadratic”时,结果是“memory error as below:
Traceback (most recent call last):
File "inter_comp.py", line 37, in <module>
interp = interp1d(indices[not_nan], B[not_nan], bounds_error=False,fill_value=0., kind = 'cubic')
File "/lustre/work/apps/anaconda/lib/python2.7/site- packages/scipy/interpolate/interpolate.py", line 476, in __init__
self._spline = splmake(self.x, self._y, order=order)
File "/lustre/work/apps/anaconda/lib/python2.7/site-packages/scipy/interpolate/interpolate.py", line 2356, in splmake
B = _fitpack._bsplmat(order, xk)
MemoryError
我的代码如下:
^{pr2}$我不确定是我使用的计算平台的问题,还是处理数据的方式或编码的问题。在
你能告诉我解决这个问题的办法吗?在
谢谢你, 艾萨克
interp1d中的样条插值使用全矩阵。最好使用splev/splrep combo、UnivariateSpline或CubicSpline(将在未来的scipy版本中提供)。在
编辑:这个答案在scipy0.19.0及更高版本中已经过时,其中
interp1d
不再使用完整矩阵。在相关问题 更多 >
编程相关推荐