我运行插值函数的代码时出错

2024-04-27 03:09:19 发布

您现在位置:Python中文网/ 问答频道 /正文

正如您在下面看到的,我已经输入了我的代码,前两个块可以正常工作。但是,当我开始插值时,我开始有问题了。最后出现的最大错误是:TypeError:'float'类型的对象没有len()

我还在学这门语言,所以如果我有不好的意见,请别客气。在

这是我的代码:

# Imported array of data from a text file.
q1, a1 = loadtxt("values.txt", unpack = True, skiprows = 1)
print q1
print a1

# Creating a while loop for this part of the code.
a = 3
b = -2
c = -9
q = 0.5
qt = 0.1

while q < 1.5:
    print q, a
    q += qt
    a = a + b*qt
    b = b + c*qt

# Interpolation
from scipy.interpolate import interp1d
f = interp1d(q,a,'cubic')
q1 = linspace(0.5,1.4,25)
a1 = f(q1)
plot(q1,a1, '-',  q,a, 'o')
show()

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-5-de5ecb6dbfd0> in <module>()
      1 # Interpolation
      2 from scipy.interpolate import interp1d
----> 3 f = interp1d(q,a,'cubic')
      4 q1 = linspace(0.5,1.4,25)
      5 a1 = f(q1)

C:\Users\krazzy\AppData\Local\Enthought\Canopy32\User\lib\site-packages\scipy\interpolate\interpolate.pyc in __init__(self, x, y, kind, axis, copy, bounds_error, fill_value, assume_sorted)
    355                  assume_sorted=False):
    356         """ Initialize a 1D linear interpolation class."""
--> 357         _Interpolator1D.__init__(self, x, y, axis=axis)
    358 
    359         self.copy = copy

C:\Users\krazzy\AppData\Local\Enthought\Canopy32\User\lib\site-packages\scipy\interpolate\polyint.pyc in __init__(self, xi, yi, axis)
     58         self.dtype = None
     59         if yi is not None:
---> 60             self._set_yi(yi, xi=xi, axis=axis)
     61 
     62     def __call__(self, x):

C:\Users\krazzy\AppData\Local\Enthought\Canopy32\User\lib\site-packages\scipy\interpolate\polyint.pyc in _set_yi(self, yi, xi, axis)
    122         if shape == ():
    123             shape = (1,)
--> 124         if xi is not None and shape[axis] != len(xi):
    125             raise ValueError("x and y arrays must be equal in length along "
    126                              "interpolation axis.")

TypeError: object of type 'float' has no len()

谢谢。在


Tags: ofinfromselflena1scipyqt
1条回答
网友
1楼 · 发布于 2024-04-27 03:09:19

错误消息非常明显:您传入了一个对象,它是一个float,但它应该是一个有长度的对象。检查documentation,您将看到,a和{}是浮点,但是{}需要类似数组的对象。在

相关问题 更多 >