Python(おそらくパンダ)でファイルから配列を読み取るときに、最初の行(メタデータを含む)を処理してスキップするエレガントな方法はありますか?

ztl

私がこのようなファイルを持っているとしましょうbla.txt

    21        27       268       288       
55.1   21.2   25.5   23.5   22.3   20.8
28.3   27.1   27.2   26.   25.   23.1 
29.8   28.3   29.0   28.6   27.2   24.4 

最初の行には、後でスクリプト(a, b, c, d以下のスクリプト)で使用するメタデータが含まれ、残りは読みやすい単純な配列です。配列の読み取り時にスキップしながらこの最初の行を処理する方法はありますか?

言い換えれば、よりエレガントでパイソン的な方法で次のことを行う方法は?

import numpy as np

fname = 'bla.txt'

with open(fname) as f:
    lines = f.readlines()
    a, b, c, d = [float(x) for x in lines[0].split()]

myarray = np.loadtxt(fname, skiprows=1)

編集:解決策pandasは大歓迎です。[理想的には、複数のメタデータ行を処理してスキップできるソリューションが最適であることに注意してください]

bruno desthuilliers

ファイルはその行のイテレータであるためnext(f)、最初の行を取得し、イテレータポインタを2番目の行に移動するために使用できます次に(withブロック内で)開いたファイルfをに渡すことができるnumpy.loadtxt()ので、2行目からのみ読み取りを開始します

import numpy as np

fname = 'bla.txt'

with open(fname) as f:
    first = next(f)
    a, b, c, d = [float(x) for x in first.split()]
    myarray = np.loadtxt(f) # no skiprows here

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ