2017-12-11 7 views
2

大きな数値のデータファイルを保存しようとしましたが、ヘッダーが含まれています。ヘッダーをそれぞれの列に揃えています。サンプルコード:Np.savetextヘッダーを列に整列する

import numpy as np 
import os 

Output = np.empty((0,3), int) 

for i in range(30): 
    Values = 10e6 * np.random.random((1,3)) 
    Output = np.vstack((Output, Values)) 

header = 'A\tB\tC' 
np.savetxt('Output.txt', Output, delimiter='\t', newline=os.linesep, 
      header=header, comments='') 

私の出力は、次のとおりです。

enter image description here

しかし、私が何をしたい 'A'、 'B' と 'C' の列に整列される、すなわち:

どうすればこの問題を解決できますか?ご協力ありがとうございました。

+0

適切な間隔でヘッダー文字列を作成する必要があります。デフォルトの 'fmt'は'%10.5f'です。だからあなたの 'ヘッダー'はそれを考慮に入れなければなりません。 '\ t'は次のタブ(8つのスペース)にスペースを入れてください。それは絶対的なものではなく、相対的なものです。 – hpaulj

答えて

1

あなたのヘッダのフォーマットは、例えば列

の書式設定を一致させる必要があり、3列と%10.5f形式で、perlineの形式は次のとおりです。

In [185]: fmt = '\t'.join(['%10.5f']*3) 
In [186]: fmt 
Out[186]: '%10.5f\t%10.5f\t%10.5f' 

だから、数値ライン意志

In [187]: fmt%tuple(np.random.random(3)) 
Out[187]: ' 0.83330\t 0.90960\t 0.07613' 

headerに対応するであろう:

のように書くこと
In [188]: '%10s\t%10s\t%10s'%('A','B','C') 
Out[188]: '   A\t   B\t   C' 

In [189]: header = '%10s\t%10s\t%10s'%('A','B','C') 
In [193]: np.savetxt('test.txt', np.random.random((2,3)), delimiter='\t', heade 
    ...: r=header, fmt='%10.5f') 
In [194]: cat test.txt 
#   A    B   C 
    0.55919  0.55277  0.47236 
    0.93945  0.50398  0.56320 

デフォルトfmtがnp.savetxt(FNAME、X、FMT =

署名欄に記載されている '%18E'、デリミタ=」」、改行= '\ n' は、それだけ進PTSの数ではなく、全体の幅を指定するので、一致するのは難しいです=「」、フッタ=「」、コメント=「#」)

ヘッダ。

+0

これはいつもハードコーディングされる必要がありますか? – STJ

関連する問題