作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 ndarray (Z),在矩形网格 (X, Y) 上有大约 500000 个元素。
现在我想在 x,y 中的大约 100 个位置插入值,这些位置不一定在网格上。
我有一些代码在 Matlab 中运行:
data = interp2(X,Y,Z, x,y);
但是,当我尝试对 scipy.interpolate 使用相同的方法时,根据方法的不同,我会收到各种错误。例如,如果我指定 kind = 'linear'
,则 interp2d 会失败,并出现 MemoryError;如果我指定 kind='cubic'
,则会出现“OverflowError:太多数据点无法插值”。我还尝试了 Rbf 和 bisplev,但它们也失败了。
所以问题是:是否存在允许对大型矩阵进行插值的插值函数?问题还有其他解决方案吗?(或者我是否必须编写一个函数来选择要插值的点周围的合适区域,然后调用 interp2d?)
此外:如何处理复数?
最佳答案
由于您的数据位于网格上,因此您可以使用 RectBivariateSpline .
要处理复数,您可以分别插入 data.real
和 data.imag
(FITPACK 例程 IIRC 不处理复数数据)。
关于python - 大矩阵的 SciPy 插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5328128/
我是一名优秀的程序员,十分优秀!