我正在使用scipy.interpolate.interp2d为一个曲面创建插值函数。然后,我有两个实际数据数组,我想要计算插值点。如果我将这两个数组传递给interp2d函数,我会得到一个包含所有点的数组,而不仅仅是点对。
我的解决方案是将这两个数组压缩到一个坐标对列表中,并在循环中将其传递给插值函数:
f_interp = interpolate.interp2d(X_table, Y_table,Z_table, kind='cubic')
co_ords = zip(X,Y)
out = []
for i in range(len(co_ords)):
X =
尝试从常规输入网格中插入数据,并在scipy.interpolate.interp2d文档中看到了这一点
如果输入数据位于网格上,请参见RectBivariateSpline更快的2D插值。
因此,我尝试使用scipy.interpolate.RectBivariateSpline而不是interp2d。这两个函数的文档看起来非常相似,因此我预计这会产生类似的结果:
import numpy as np
from scipy.interpolate import RectBivariateSpline, interp2d
from .constants import data
x
我想要绘制一个二维数据的图表,其中的值是由双线性插值确定的。作为初始测试,我决定只使用维基百科页面中的示例:
但是,总的来说,我需要这样做才能适用于任何一组数据,因此,一个只适用于这种特殊的特殊情况的解决方案是没有用的。下面的数据中有一个稍微复杂的例子,被注释为“另一个示例”。
以下是我迄今所做的几次尝试,并附有一些评论,其中提到了为什么不起作用的原因:
import matplotlib
import numpy as np
import matplotlib.cm as cm
import matplotlib.pyplot as plt
from scipy.interpolate im
我有一个在矩形网格(X,Y)上有大约500000个元素的ndarray (Z)。
现在我想插值x,y中大约100个位置的值,这些位置不一定在网格上。
我有一些在Matlab中工作的代码:
data = interp2(X,Y,Z, x,y);
但是,当我尝试对scipy.interpolate使用相同的方法时,根据方法的不同,我得到了各种错误。例如,如果我指定kind = 'linear',interp2d将失败,并返回MemoryError;如果我指定kind='cubic',则会出现"OverflowError: Too many points to
我正在尝试将MATLAB代码转换成等效的python。我有3个数组,我想计算interp2d
nuA = np.asarray([2.439,2.5,2.6,2.7,2.8,3.0,3.2,3.5,4.0,5.0,6.0,8.0,10,15,25])
nuB = np.asarray([0,0.1,0.2,0.3,0.5,0.7,1])
a, b = np.meshgrid(nuA, nuB)
betaTab = np.transpose(np.asarray([[0.0,2.16,1.0,1.0,1.0,1.0,1.0],[0.0,1.592,3.39,1.0,1.0,1.0,1.0],[
我试图插值一个二维函数,我遇到了我认为scipy.interpolate.interp2d的奇怪行为。我不明白是什么问题,我很乐意得到任何帮助或暗示。
import numpy as np
from scipy.interpolate import interp2d
x = np.arange(10)
y = np.arange(20)
xx, yy = np.meshgrid(x, y, indexing = 'ij')
val = xx + yy
f = interp2d(xx, yy, val, kind = 'linear')
当我运行这段代码时,会收
我试图在2D数据上进行插值,但是一直得到错误的could not convert string to float: 'extrapolate'。我非常肯定,得到误差的值并不超出用于插值的间隔。
我只是张贴我的具体例子,因为为了帮助我处理错误,您不需要理解我使用的特定功能。
from scipy.interpolate import interp2d
import numpy as np
import scipy.stats as si
import math as m
def C_prime_function(M,v):
return si.norm.cdf(M/v
我正在做一个使用NumPy和SciPy的Python项目。我有以下几点:
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.0001或0.001,即我想计算函数fxy为
finer_x = numpy.arange(-5,5,0.0001)
finer_y = numpy.arange(-5,5,
我想使用interpolate2d选项来预测“训练”点之外的值。我有value=f(b_1,b_2)函数,我想近似/插值它。matplotlib能够使用给定的数据进行插值并绘制它。
我尝试使用scipy.interpolate.interp2d,但没有成功,执行错误时发生了。
raise TypeError('m >= (kx+1)(ky+1) must hold')
TypeError: m >= (kx+1)(ky+1) must hold
这是密码:
from scipy import interpolate
import scipy
import pa
我试图得到x,y,z点之间的高程值。使用scipy.interpolate.interp2d,如:
x = np.array((140.865, 140.863))
y = np.array((59.8817, 59.8814))
z = np.array((121, 127))
f = scipy.interpolate.interp2d(x,y,z, kind="linear")
z_new = f(140.864,59.58816)
我得到以下错误:
TypeError: m >= (kx+1)(ky+1) must hold
我还没有找到有关此类型错误的明确文档。