実現したいこと
数行の数値データが記載されているテキストファイルを読み込み,特定の行の数値を別のテキストファイルへ書き込みを行いたいです.
例えば,10個の連続した番号の振ってあるテキストファイルがあって,
まず,最初の5つのテキストファイル:data01.txt〜data05.txtに次のように3行3列の数値が並んでいるとき,
1.234 5.678 9.012
3.456 7.890 1.234
5.678 9.012 3.456
各テキストファイルの2行目:3.456 7.890 1.234を取り出して,alldata.txtというファイルに書き込みます.
残りの5つのdata06.txt〜data10.txtに以下のように
9.876 5.432 1.098
1行3列の数値だけが並んでいるとき,この数値を取り出してallata.txtに追記したいです.
アウトプットイメージとしては,alldata.txtに
3.456 7.890 1.234
3.456 7.890 1.234
3.456 7.890 1.234
3.456 7.890 1.234
3.456 7.890 1.234
9.876 5.432 1.098
9.876 5.432 1.098
9.876 5.432 1.098
9.876 5.432 1.098
9.876 5.432 1.098
という数値が並んで欲しいです.
発生している問題
data06.txt以降の数値を取り出す際,数値は読み込み出来ているのですが,書き込み時にエラーが出て困っています.
該当のソースコード
Python3
1# test.py 2import numpy as np 3f = open('alldata.txt', 'w') 4 5for i in range(1, 10): 6 a, b, c = np.loadtxt('data%d.txt' %(i), unpack=True) 7 if i >= 1 and i < 6: 8 f.write('%f %f %f¥n' %(a[1], b[1], c[1])) 9 elif i >=6: 10 f.write('%f %f %f¥n' %(a[0], b[0], c[0])) 11 12f.close() 13
エラーメッセージ
File "text.py", line 10, in main f.write('%f %f %f¥n' %(a[0], b[0], c[0])) IndexError: invalid index to scalar variable.
試したこと
data01.txt〜data05.txtは変数a~cの型がnumpy.ndarrayになっていて,data06.txt〜data10.txtではnumpy.float64になっていて,型が違うからエラーが起きているのかな?と思ってテキストファイルを読み込んだあとに
a, b, c = np.loadtxt('data%d.txt' %(i), unpack=True) a = np.array(a) b = np.array(b) c = np.array(c)
として,型を変えたのですが,今度は同じところで
File "text.py", line 10, in main f.write('%f %f %f¥n' %(a[0], b[0], c[0])) IndexError: too many indices for array.
というエラーが出ます.
これらのエラーを解消して,冒頭に示したアウトプットが得られるような方法を教えてほしいです.
よろしくお願いします.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/19 02:18
2021/01/19 06:27