Python 二维插值导致溢出错误:要插值的数据点太多

Python 二维插值导致溢出错误:要插值的数据点太多,python,numpy,scipy,2d,interpolation,Python,Numpy,Scipy,2d,Interpolation,我正在将球坐标网格上采样的信号映射到柱坐标网格。显然,两者都不是统一的网格。两个网格的大小均为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) 球形的、球形的、圆柱形的和圆柱形的在1D方向上都是不均匀的

我正在将球坐标网格上采样的信号映射到柱坐标网格。显然,两者都不是统一的网格。两个网格的大小均为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)
球形的、球形的、圆柱形的和圆柱形的在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来处理这个非未成形2D插值?我知道有一个
矩形双变量样条线
,但您的原始数据似乎必须在一个统一的网格上。谢谢。

您错误地调用了使用
interp2d
创建的对象。它有自己的论点

x:1D数组,要插值的网格的x坐标。
y:1D数组,要插值的网格的y坐标

因此,您应该传入一维数组,如
columinal\ux,columinal\uy
,而不是从它们创建的网格

即使在创建时,interp2d也不需要网格网格:请参见,它对x和y使用1D阵列

有一个矩形二元样条线,但看起来原始数据必须在一个统一的网格上

它必须在一个网格上,而不是一个统一的网格上。例如,x坐标为1、3、10和y坐标为-3、2的6个点可以作为栅格。网格是任何可以由单独的1D数组指定的东西,就像我在上面所做的那样,而不是元组数组


对于球体上的插值,有一个。
但我不明白你是如何期望通过2D插值实现从球形到圆柱形的转换的,所以我无法建议合适的方法

也许可以尝试使用basemap进行重新投影,但错误是在调用interp2d时抛出的,而不是在调用f时抛出的。这并不能解释为什么
interp2d(x,y,z,kind='cubic')
会失败,因为文档中说2d数组适合这个数组。我遇到了同样的问题。原来我的分数实在太多了。当我将数组的长度减少到最多10000个元素时,它就起作用了。