動作環境
GeForce GTX 1070 (8GB)
ASRock Z170M Pro4S [Intel Z170chipset]
Ubuntu 14.04 LTS desktop amd64
TensorFlow v0.11
cuDNN v5.1 for Linux
CUDA v8.0
Python 2.7.6
IPython 5.1.0 -- An enhanced Interactive Python.
gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
GNU bash, version 4.3.8(1)-release (x86_64-pc-linux-gnu)
Python2の環境で実行。
ファイル構成
input.tab
tab区切りのファイル。
x y z E v1 v2
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
result.csv
3, 1, 4, 1, 5
3, 1, 4, 1, 5
3, 1, 4, 1, 5
x,y,z,v1,v2の値を格納しているとする。
output.tab
以下のファイルを作りたい。
x y z E v1 v2
3.000 1.000 4.000 4.000 1.000 5.000
3.000 1.000 4.000 4.000 1.000 5.000
3.000 1.000 4.000 4.000 1.000 5.000
- E以外の値をresult.csvの値で置き換えたい
- 少数桁数は任意
code v0.1
Python3で使う*
がPython2では使えない。
色々試して以下のベタ書きになってしまった。
merge_170503.py
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import numpy as np
tabdat = np.genfromtxt('input.tab', delimiter=' ')
csvdat = np.genfromtxt('result.csv', delimiter=',')
for aline in zip(tabdat[1:], csvdat): # 1:skip title line
for idx in range(0, 3):
print("%.3f" % aline[1][idx], end=' ')
print("%.3f" % aline[0][3], end=' ')
for idx in range(3, 5):
print("%.3f" % aline[1][idx], end=' ')
print()
$ python merge_170503.py
3.000 1.000 4.000 4.000 1.000 5.000
3.000 1.000 4.000 4.000 1.000 5.000
3.000 1.000 4.000 4.000 1.000 5.000
Python3で実行しようとすると以下の問題になる。環境整備を考えないといけない。
No module named numpy
教えていただいた事項
@shiracamus さんのコメントにてnumpy.c_
を使ったすっきりしたコードを紹介いただきました。
情報感謝です。
https://docs.scipy.org/doc/numpy/reference/generated/numpy.c_.html
numpy.c_で検索すると、Qiitaの記事も見つかりました。
Numpyで行列の連結
NumPy の配列操作 (2)