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 に答える