0

我有一个值列表,比如说

13, 21, 33
24, 43, 80 and so on. 

我正在尝试单独阅读每一行,然后记录每一行的日志,例如。

logy = log10(13, 21, 33)

在一个循环中,分别遍历每一行。

然后,我将日志值用作幂律拟合的 y 值。然后我得到每条线的拟合指数。

但是,我无法阅读这些行并通过循环单独获取它们的日志。关于我如何做到这一点的任何建议?我的行数很少。

到目前为止,我有 -

from numpy import log10
from scipy import optimize
from math import sqrt

x = [3.6, 4.5, 5.8, 8.0]
y809   =1.390275E-12,6.859800000000001E-13,3.901267241379311E-13,1.55844E-13
yy816   =2.4975E-12,1.2187800000000002E-12,6.510724137931035E-13,2.55119625E-13
logx = log10(x)


logy = log10(y809)
logyerr = 0.05

fitfunc = lambda p, x: p[0] + p[1] * x
errfunc = lambda p, x, y, err: (y - fitfunc(p, x)) / err

pinit = [1.0, -1.0]
out = optimize.leastsq(errfunc, pinit,
                       args=(logx, logy, logyerr), full_output=1)

pfinal = out[0]
covar = out[1]
print pfinal
print covar

index = pfinal[1]
amp = 10.0**pfinal[0]

indexErr = sqrt( covar[0][0] )
ampErr = sqrt( covar[1][1] ) * amp

如您所见,我还没有弄清楚如何阅读和记录每一行的日志。

4

2 回答 2

2

你可以试试这个:

with open('data.txt','r') as f:                     #<-- open file
    next(f)                                         #<-- skip header
    for line in f:                                  #<-- read line by line
        args = [float(x) for x in line.split(' ')]  #<-- parse line into list
        print log10(args)                           #<-- run log10 on list
于 2013-07-23T14:34:25.850 回答
0

假设数据在逗号分隔的文件中,data.txt

import numpy as np
a=np.genfromtxt('data.txt',delimiter=',')
[np.log10(x) for x in [a[y,:] for y in range(len(a))]]

给出每个值的对数,每一行都有一个单独的数组:

[array([ 1.11394335,  1.32221929,  1.51851394]), array([ 1.38021124,  1.63346846,  1.90308999])]
于 2013-07-25T08:53:27.767 回答