import numpy as np
from scipy.interpolate import interp1d
x = np.array([ 0, 0, 0, 0, 0, 30])
time = np.array([ 5, 5, 10, 10, 10, 20])
intx = interp1d(time,x,'linear', 0, True, False, 0)
print intx([4,5,5,6,10,11,20, 20.0001])
>>> [ 0. nan nan 0. 0. 3. 30. 0.]
如您所见,在所有情况下,除了时间值==第一对值外,插入式都返回一个实数。在
我知道纽比。独一无二(),这只是一个学术问题。这是运行在iPython中的anacondapython2.7。在
谢谢!在
在上面的例子中,我建议只使用Y变量的采样点。考虑以下几点。在
以上点表示一条与Y轴平行的线。因此,直线的斜率是未定义的。所以,在这里你可以只对Y变量采样,然后为每个采样点复制X变量的值。您会发现下面的图很直观。
地块1-
地块2-
您的问题是您试图插值超出间隔的点,这导致
scipy.interpolate.interp1d
在试图计算两点之间的斜率时启动RuntimeWarning
(它发生在插值e.py416号线附近):看看在间隔内移动点时会发生什么:
^{pr2}$如果你把它画出来,你会发现一切都是有意义的:
这就是
interp1d
的工作原理:x
和{interp1d
,它将创建一个f
可调用方法然后传递新的
x_new
值,其中要计算f
,它将执行以下步骤:找到原始数据中插入插值值的位置。在
剪辑x_新的指数,使它们在
x
指数的范围内,并且至少为1。删除x_new[n] = x[0]
的错误插值计算每个区域的斜率。在
计算
x_new
中每个条目的实际值。在相关问题 更多 >
编程相关推荐