Fit算法不接受我的数据

时间:2009-07-23 10:48:39

标签: python arrays file-io

我正在使用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, ... ]

有人知道我做错了吗?

谢谢!

2 个答案:

答案 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数组。

谢谢你给我一个提示!