gpt4 book ai didi

python - `ValueError: A value in x_new is above the interpolation range.` - 除了不提升值还有什么其他原因?

转载 作者:太空狗 更新时间:2023-10-29 21:15:54 25 4
gpt4 key购买 nike

我在 scipy interp1d 函数中收到此错误。通常,如果 x 不是单调递增,就会产生此错误。

import scipy.interpolate as spi
def refine(coarsex,coarsey,step):
finex = np.arange(min(coarsex),max(coarsex)+step,step)
intfunc = spi.interp1d(coarsex, coarsey,axis=0)
finey = intfunc(finex)
return finex, finey

for num, tfile in enumerate(files):
tfile = tfile.dropna(how='any')
x = np.array(tfile['col1'])
y = np.array(tfile['col2'])
finex, finey = refine(x,y,0.01)

代码是正确的,因为它成功处理了 6 个数据文件并在第 7 个文件上抛出了错误。所以一定是数据有问题。但据我所知,数据一直在增加。很抱歉没有提供示例,因为我无法在示例中重现错误。

有两件事可以帮助我:

  1. 一些头脑 Storm ——如果数据确实是单调的增加,还有什么会产生这个错误?另一个提示,关于小数,可以在 this question 中, 但我觉得我的解决方案(x 的最小值和最大值)足够强大,可以避免它。或者不是吗?
  2. 是否有可能(如何?)返回 x_new 和它是抛出 ValueError: A value in x_new is above the interpolation range. 这样我就可以真正看到文件有问题?

更新

所以问题是,出于某种原因,max(finex) 大于 max(coarsex)(一个是 .x39,另一个是 .x4) .我希望将原始值四舍五入到 2 位有效数字可以解决问题,但事实并非如此,它显示的数字更少,但仍然计算未显示的数字。我该怎么办?

最佳答案

如果您正在运行 Scipy v. 0.17.0 或更新版本,那么您可以 pass fill_value='extrapolate' to spi.interp1d , 并且它会推断以适应你的这些位于插值范围之外的值。所以像这样定义你的插值函数:

intfunc = spi.interp1d(coarsex, coarey,axis=0, fill_value="extrapolate")

不过请注意!

根据您的数据外观和您执行的插值类型,外推值可能是错误的。如果您有嘈杂或非单调的数据,则尤其如此。在您的情况下,您可能没问题,因为您的 x_new 值仅略微超出您的插值范围。

下面是一个简单的演示,说明此功能如何很好地工作,但也会给出错误的结果。

import scipy.interpolate as spi
import numpy as np

x = np.linspace(0,1,100)
y = x + np.random.randint(-1,1,100)/100
x_new = np.linspace(0,1.1,100)
intfunc = spi.interp1d(x,y,fill_value="extrapolate")
y_interp = intfunc(x_new)

import matplotlib.pyplot as plt
plt.plot(x_new,y_interp,'r', label='interp/extrap')
plt.plot(x,y, 'b--', label='data')
plt.legend()
plt.show()

enter image description here

因此,插值部分(红色)运行良好,但由于噪声,插值部分显然无法遵循该数据中的其他线性趋势。因此,对您的数据有一些了解并谨慎行事。

关于python - `ValueError: A value in x_new is above the interpolation range.` - 除了不提升值还有什么其他原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45429831/

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