我正在使用here描述的算法将高斯钟形曲线拟合到我的数据中。
如果我用:
生成我的数据数组x=linspace(1.,100.,100)
data= 17*exp(-((x-10)/3)**2)
一切正常。
但是如果我使用
从文本文件中读取数据file = open("d:\\test7.txt")
arr=[]
data=[]
def column(matrix,i):
return [row[i] for row in matrix]
for line in file.readlines():
numbers=map(float, line.split())
arr.append(numbers)
data = column(arr,300)
x=linspace(1.,115.,115)
我收到错误消息:
Traceback (most recent call last):
File "readmatrix.py", line 60, in <module> fit(f, [mu, sigma, height], data)
File "readmatrix.py", line 42, in fit if x is None: x = arange(y.shape[0])
AttributeError: 'list' object has no attribute 'shape'
据我所知,数据中包含的值是正确的,如下所示:
[0.108032, 0.86181600000000003, 1.386169, 3.2790530000000002, ... ]
有人知道我做错了吗?
谢谢!
答案 0 :(得分:4)
fit函数需要将数据作为numpy数组(具有shape属性)而不是列表(不具有),因此需要AttributeError。
转换您的数据:
def column(matrix,i):
return numpy.asarray([row[i] for row in matrix])
答案 1 :(得分:4)
balpha的解决方案不正确;解决方案只是通过numpy.array将我的列表转换为numpy数组。
谢谢你给我一个提示!