2D interpolation results in OverflowError: Too many data points to interpolate
2D interpolation results in OverflowError: Too many data points to interpolate
我正在将在球坐标网格上采样的信号映射到圆柱坐标网格。显然两者都不是统一的网格。两个网格的大小都是 256 X 864(行 X 列)。
所以我尝试了这样的事情:
f = interp2d(x, y, z, kind='cubic')
zz= f(xx, yy)
这里,
x, y = meshgrid(spherical_x, spherical_y)
xx, yy = meshgrid(cylindrical_x, cylindrical_y)
spherical_x, spherical_y, cylindrical_x, and cylindrical_y
在 1D 方向上都是不均匀的。
当我 运行 interp2D 时,出现一条错误消息,上面写着:
File "C:\Users\MyComputer\AppData\Local\Continuum\anaconda3\lib\site-packages\scipy\interpolate\_fitpack_impl.py", line 48, in _intc_overflow
raise OverflowError(msg)
OverflowError: Too many data points to interpolate
所以,我想知道我要用 Python/NumPy/SciPy 对这个非不均匀二维插值做什么?我知道有一个 rectbivariatespline
,但你的原始数据似乎必须在统一的网格上。谢谢。
您错误地调用了使用 interp2d
创建的对象。它的 call method 有参数
x : 1D array, x-coordinates of the mesh on which to interpolate.
y : 1D array, y-coordinates of the mesh on which to interpolate.
因此,您应该传入像 cylindrical_x, cylindrical_y
这样的一维数组,而不是从它们创建的 meshgrid。
即使在创建时,interp2d 也不需要 meshgrid:请参阅 example in documentation,它对 x 和 y 使用一维数组。
there is a rectbivariatespline, but it seems your original data have to be on a uniform grid.
它必须在网格上,而不是均匀 网格。例如,x-coordinates 1, 3, 10 和 y-coordinates -3, 2 的 6 个点可以作为一个网格。网格是任何可以像我上面那样由单独的一维数组指定的东西,而不是元组数组。
对于球体上的插值,有 RectSphereBivariateSpline。
但是我不明白您如何期望通过 2D 插值实现从球面到圆柱面的转换,因此无法建议合适的方法。
我正在将在球坐标网格上采样的信号映射到圆柱坐标网格。显然两者都不是统一的网格。两个网格的大小都是 256 X 864(行 X 列)。
所以我尝试了这样的事情:
f = interp2d(x, y, z, kind='cubic')
zz= f(xx, yy)
这里,
x, y = meshgrid(spherical_x, spherical_y)
xx, yy = meshgrid(cylindrical_x, cylindrical_y)
spherical_x, spherical_y, cylindrical_x, and cylindrical_y
在 1D 方向上都是不均匀的。
当我 运行 interp2D 时,出现一条错误消息,上面写着:
File "C:\Users\MyComputer\AppData\Local\Continuum\anaconda3\lib\site-packages\scipy\interpolate\_fitpack_impl.py", line 48, in _intc_overflow
raise OverflowError(msg)
OverflowError: Too many data points to interpolate
所以,我想知道我要用 Python/NumPy/SciPy 对这个非不均匀二维插值做什么?我知道有一个 rectbivariatespline
,但你的原始数据似乎必须在统一的网格上。谢谢。
您错误地调用了使用 interp2d
创建的对象。它的 call method 有参数
x : 1D array, x-coordinates of the mesh on which to interpolate.
y : 1D array, y-coordinates of the mesh on which to interpolate.
因此,您应该传入像 cylindrical_x, cylindrical_y
这样的一维数组,而不是从它们创建的 meshgrid。
即使在创建时,interp2d 也不需要 meshgrid:请参阅 example in documentation,它对 x 和 y 使用一维数组。
there is a rectbivariatespline, but it seems your original data have to be on a uniform grid.
它必须在网格上,而不是均匀 网格。例如,x-coordinates 1, 3, 10 和 y-coordinates -3, 2 的 6 个点可以作为一个网格。网格是任何可以像我上面那样由单独的一维数组指定的东西,而不是元组数组。
对于球体上的插值,有 RectSphereBivariateSpline。 但是我不明白您如何期望通过 2D 插值实现从球面到圆柱面的转换,因此无法建议合适的方法。