0
我有一個簡單Point
類如下插值類對象
class Point(object):
def __init__(self, x=0.0, y=0.0, z=0.0):
self.x = x
self.y = y
self.z = z
我想用scipy.interpolate.interp1d
作爲時間的函數,例如內插這些點
x,y,z = f(t)
然而,當我嘗試以下小例子
import numpy as np
from scipy.interpolate import interp1d
times = np.array([0.0, 0.1, 0.2])
points = np.array([Point(0.0, 0.0, 0.0),
Point(1.0, 1.0, 1.0),
Point(2.0, 2.0, 2.0)])
function = interp1d(times, points)
new_point = function(0.05)
我收到以下錯誤
Traceback (most recent call last):
File "D:/example.py", line 31, in <module>
function = interp1d(times, points)
File "C:\long_path\scipy\interpolate\interpolate.py", line 439, in __init__
y = y.astype(np.float_)
TypeError: float() argument must be a string or a number, not 'Point'
我也試着重載算術運算符的Point
類(如__add__
,__sub__
,__truediv__
)雖然這似乎沒有幫助。
有沒有一種方法可以在我的課堂上使用scipy.interpolate.interp1d
?
爲什麼不把所有的點放在'Nx3' float64數組中? – Kh40tiK