插值与最新值

时间:2014-09-26 13:42:59

标签: python numpy scipy

假设我在两个数组(x,y)x中有一组y点。

我想为y的新值插入x_new的值。但是,此插值应使用数组中{strong>的“以前看到的”)值y

换句话说,插值

x = [0, 10, 15]
y = [1,  3,  6]

x_new = [1, 2, 9, 14, 16]

应该返回:

y_new = [1, 1, 1, 3, 6]

我怎么能在numpy中做到这一点?循环并手动检查以前的值是我唯一的选择吗?

说明

y_new的第一个元素是1,这是因为其关联的x_new值为1,最大值小于1,{ {1}}值为x,其0y

考虑这一点的最佳方式可能是将1视为时间值,我希望用最新的x值填充y_new

1 个答案:

答案 0 :(得分:3)

假设x正在递增。以下是使用np.searchsorted进行插值的方法:

In [194]: x
Out[194]: array([ 0, 10, 15])

In [195]: y
Out[195]: array([1, 3, 6])

In [196]: x_new
Out[196]: array([ 1,  2,  9, 14, 15, 16])

In [197]: i = np.searchsorted(x, x_new, side='right') - 1

In [198]: y_new = y[i]

In [199]: y_new
Out[199]: array([1, 1, 1, 3, 6, 6])

x_new不必排序。)

如果x_new中的任何值小于x[0],则结果不正确,但这不应该是问题,因为在这种情况下没有定义过程。