Scipy interp1d throws Value Error: x and y arrays must be equal in length along interpolation axis

Scipy interp1d throws Value Error: x and y arrays must be equal in length along interpolation axis

我正在使用大小为 1465 x 12 的二维数组。我有另一个数组,其中包含时间值,大小为 1465。当我尝试使用 scipy 的 interp1d 时,出现上述错误.我不知道我是否正确使用了该功能。 interp1d 的文档告诉我也可以将它用于 N 维数组。我的实现如下

t = [1,2,3,4]
k=[[1,2],[2,3],[3,4],[4,5]]
interp = interp1d(t,k)

当我运行这段代码时,我得到了值错误。这里请注意 k 的列是相互独立的。为了让它工作,我知道我可以遍历每一列,但我相信 interp1d 已经可以做到这一点。但是我不知道如何让它工作。

interp1d默认的插值轴为-1,即“y”数据沿最后一个轴。对于你的k,插值轴应该是第一个轴,所以使用axis=0:

In [120]: t = [1, 2, 3, 4]

In [121]: k = [[1, 2], [2, 3], [3, 4], [4, 5]]

In [122]: f = interp1d(t, k, axis=0)

In [123]: f(1.5)
Out[123]: array([1.5, 2.5])