gpt4 book ai didi

python - scipy.interpolate.splev() 错误,不明白来源

转载 作者:行者123 更新时间:2023-12-01 02:14:01 80 4
gpt4 key购买 nike

当我使用scipy.interpolate.splev()时,我收到一个迄今为止无法解读的错误。 Scipy 版本 1.0.0 和 Python 版本 2.7.6。以下代码重现了它:

from scipy.interpolate import splrep

x = [2107.19568388, 2107.2161156, 2107.23654721, 2107.25697893, 2107.27741044, 2107.74733769, 2107.76776941, 2107.97208545, 2107.99251717, 2108.01294878, 2108.23769664, 2108.25812816, 2108.4624444, 2108.48287591, 2108.50330763, 2108.68719226, 2108.70762377, 2108.72805548, 2108.7484871, 2108.91194001, 2108.93237163, 2108.95280334, 2108.97323485, 2108.99366647, 2109.11625625, 2109.13668777, 2109.15711938, 2109.17755109, 2109.19798261, 2109.93352091, 2109.95395253, 2109.97438424, 2110.15826877, 2110.17870038, 2110.199132, 2110.21956361, 2110.44431147, 2110.46474308, 2110.64862761, 2110.66905923, 2110.68949094, 2110.70992246, 2110.73035407, 2111.09812333, 2111.11855485]
y = [0.608444254293961, 1.1307864656802968, 1.019736639592334, 0.9961412276026707, 0.9592896281866948, 1.2359383661202434, 1.2812703028911483, 0.505895841200648, 0.9512935629735984, 0.9356096606272141, 0.7855456056935104, 0.981954692622873, 1.072663326334132, 1.0593408940891165, 1.1233664656408031, 0.9644455920846516, 0.9314054842890923, 1.0304404875717894, 1.0352072048542664, 1.0450795581773475, 0.872728098339811, 0.9457681125627769, 1.0171913808928397, 0.8019547307735675, 1.0618760993725407, 1.187125996959775, 1.118741742900147, 0.8138502901656298, 0.8938206893668276, 1.1992722199884276, 0.9804337917647384, 1.2044798450916494, 0.37487515771487456, 1.1281341765413573, 1.0916269656818134, 1.0815338524707898, 0.7864996838381028, 1.084513017667964, 0.9275967249553375, 0.9147866697835813, 0.8990815864549077, 0.9901485904924978, 1.0, 1.094349087797393, 1.0823604234628468]
b = [2107.07820195, 2109.10604032, 2111.13387869]

_ = splrep(x,y,t=b)

当我运行此程序时,出现以下错误:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/nfs/phs3/ar0/S/PROJ/jwallace/venv/lib/python2.7/site-packages/scipy/interpolate/fitpack.py", line 289, in splrep
res = _impl.splrep(x, y, w, xb, xe, k, task, s, t, full_output, per, quiet)
File "/nfs/phs3/ar0/S/PROJ/jwallace/venv/lib/python2.7/site-packages/scipy/interpolate/_fitpack_impl.py", line 514, in splrep
raise _iermess[ier][1](_iermess[ier][0])
ValueError: Error on input data

这个错误

The answer to this question, with the same problem, 是为了确保 x 按升序排列。这是为了我,所以这不是问题。

This bug report's resolution 似乎需要在每个断点之间有 x 的值。我的 xb 组合满足了这一点。

我的数据有什么问题?

最佳答案

pv's comment in the bug report :

FITPACK requires the knots satisfy the conditions

xb<t(k+2)<t(k+3)<...<t(n-k-1)<xe

the schoenberg-whitney conditions, i.e. there must be a subset of data points xx(j) such that

t(j) < xx(j) < t(j+k+1), j=1,2,...,n-k-1

因此,t 值必须介于 xbxe 之间,即 x 的开始值和结束值.

由于 min(b)max(b) 超出范围 [xb, xe],因此引发错误:

In [102]: min(b) < np.array(x).min()
Out[102]: True

In [103]: max(b) > np.array(x).max()
Out[103]: True

此条件已 added to splrep's docstring从 scipy 版本 0.15.0 开始。

关于python - scipy.interpolate.splev() 错误,不明白来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48527473/

80 4 0
文章推荐: scala - Spark RDD any() 和 all() 方法?
文章推荐: jquery - $( "
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com