【发布时间】:2016-10-02 05:41:27
【问题描述】:
我知道interp1d 期望插入一个值数组,但是将浮点数传递给它时的行为很奇怪,以至于询问发生了什么以及返回的究竟是什么
import numpy as np
from scipy.interpolate import interp1d
x = np.array([1,2,3,4])
y = np.array([5,7,9,15])
f = interp1d(x,y, kind='cubic')
a = f(2.5)
print(repr(a))
print("type is {}".format(type(a)))
print("shape is {}".format(a.shape))
print("ndim is {}".format(a.ndim))
print(a)
输出:
array(7.749999999999992)
type is <class 'numpy.ndarray'>
shape is ()
ndim is 0
7.749999999999992
编辑:澄清一下,我不希望 numpy 甚至有一个无量纲、无形的数组,更不用说 scipy 函数返回一个。
print("Numpy version is {}".format(np.__version__))
print("Scipy version is {}".format(scipy.__version__))
Numpy version is 1.10.4
Scipy version is 0.17.0
【问题讨论】:
-
我可以复制这个。你能具体说明你的问题是什么吗?我猜你希望它应该返回一个
float并且你在问这是否是一个错误。 -
这个相关问题可能有助于澄清事情:stackoverflow.com/questions/773030/…
-
鉴于 f(2) = 7 和 f(3) = 9,我认为 2.5 的插值介于 7 和 9 之间并不奇怪。
-
@Forzaa- 问题不在于插值,而是返回的无量纲、无形数组。我同意这个值本身是正确的。
-
@RyanJ.Smith 这完全清楚了。谢谢。
标签: python numpy scipy interpolation