gpt4 book ai didi

python - scipy.interpolate.interp1d 是否有导致 x 值的十进制值问题?

转载 作者:行者123 更新时间:2023-11-28 20:20:44 33 4
gpt4 key购买 nike

我正在尝试使用 scipy 中的 interp1d() 来插入一些数据,但我一直遇到超出或范围错误。经过几个小时的谷歌搜索,我现在知道 x 值不是按升序排列会导致我遇到同样的错误,但我已经确定这不是问题所在。据我所知,interp1d() 似乎不喜欢第一个值中的小数。我错过了什么吗?

我的问题的简化版本:

以下运行正常。

import numpy as np
from scipy.interpolate import interp1d

interp1d(np.array([1, 2, 3, 4, 5, 6]),
np.array([2, 4, 6, 8, 10, 12]), kind='cubic')(np.linspace(1, 6, num=40))

但是,这个:

interp1d(np.array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6]),
np.array([2, 4, 6, 8, 10, 12]), kind='cubic')(np.linspace(1, 6, num=40))

返回:

ValueError: A value in x_new is below the interpolation range.

但是,这工作得很好。

interp1d(np.array([1.0, 2.2, 3.3, 4.4, 5.5, 6.6]),
np.array([2, 4, 6, 8, 10, 12]), kind='cubic')(np.linspace(1, 6, num=40))

最佳答案

inter1d 返回一个函数,该函数允许您在数据域内插入。当你使用

interp1d(np.array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6]),
np.array([2, 4, 6, 8, 10, 12]), kind='cubic')(np.linspace(1, 6, num=40))

数据域是区间 [1.1, 6.6]x 值 的最小值到最大值。

因为 1np.linspace(1, 6, num=40) 而 1 在 [1.1, 6.6] 之外, interp1d 加注

ValueError: A value in x_new is below the interpolation range.

当您尝试在 x 值 np.linspace(1, 6, num=40) 处插入数据时。

当您将数据的 x-values 更改为

np.array([1.0, 2.2, 3.3, 4.4, 5.5, 6.6])

然后数据的域扩展到 [1.0, 6.6],现在包括 1。因此,在 np.linspace(1, 6, num=40) 处进行插值现在有效。

关于python - scipy.interpolate.interp1d 是否有导致 x 值的十进制值问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30244888/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com