为什么scipy.interpolate.interp1d()告诉我我的xnew值超出范围?

时间:2014-02-18 10:16:22

标签: python scipy interpolation

我正在尝试用Python插入数据,但它只是不起作用。

具体问题如下:我有一个恒星样本的BminV颜色数据(大约70个)。我也通过插值为理论黑体发射器生成了这些值。

#BminV is the data from the stars.
temperatures = np.arange(1000.0, 80000.0, 50.0)
#I generate for each of these temperatures a BminV colour. these are stored in BminVblack.
f = interpolate.interp1d(BminVblack, temperatures, kind='cubic')
print f(BminV)

对于BminV的每个值,这将返回一个错误,表示它超出了插值范围。我以为我会检查这些范围

print np.min(BminVblack), np.max(BminVblack)
print np.min(BminV), np.max(BminV)

这样可以使BminVblack范围为-.38到3.2,BminV范围为-.36到1.8。为什么它仍然说BminV的某些值超出了插值的范围?

1 个答案:

答案 0 :(得分:0)

检查BminVblack是否是一个单调递增的数组。

如果np.all(np.diff(BminVblack)>0)评估为True,则单调递增。

如果不是单调增加,则可能会出现“超出范围”错误。如果输入数组单调递减,则会发生同样的情况。