私がこのようなファイルを持っているとしましょう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
は大歓迎です。[理想的には、複数のメタデータ行を処理してスキップできるソリューションが最適であることに注意してください]
ファイルはその行のイテレータであるため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]
コメントを追加