Ich verstehe, dass interp1d
erwartet ein Array von Werten zu interpolieren, aber das Verhalten beim Passieren es ein Schwimmer seltsam genug ist, um zu fragen, was los ist und was genau zurückgegeben wirdScipy interpolieren gibt eine ‚dimensionslose‘ Array
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)
Ausgang:
array(7.749999999999992)
type is <class 'numpy.ndarray'>
shape is()
ndim is 0
7.749999999999992
EDIT: um zu klären, würde ich nicht erwarten numpy noch viel weniger eine scipy Funktion Rückkehr man eine dimensionslose, unförmig Array haben.
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
Ich kann das replizieren. Können Sie angeben, was Ihre Frage ist? Ich nehme an, Sie erwarten, dass es ein 'float' zurückgeben sollte und Sie fragen, ob das ein Fehler ist. –
Diese verwandte Frage kann dazu beitragen, Dinge zu klären: http://StackOverflow.com/Questions/773030/Why-are-0D-arrays-in-Numpy-Not-Consided-Scalar –
Ich finde es nicht seltsam, dass der interpolierte Wert denn 2,5 liegt irgendwo zwischen 7 und 9, vorausgesetzt, dass f (2) = 7 und f (3) = 9 sind. – Forzaa