2017-07-25 5 views
-4

異なる長さの複数の1D numpy配列を.txtファイル(各配列は1つの列)に保存する良い方法を探しています。私は現在、それらのすべてをPythonのリストに入れています。 np.columnstackとnp.savetxtは異なるサイズの配列に対しては機能しません。これまでのところ私が動作させる唯一の方法は、配列を同じ長さにするために0で充填することでした。異なるサイズのnumpy配列のリストを.txt-fileに保存する

また、PandasのDataFramesを使用し、それをcvs putに保存して、各列にエントリを持たない行に書式設定を混乱させるような解決策を見つけました。

+0

を? –

+0

テキストファイルの形式を正確にどのようにしたいですか? CSVのように?そして、列の空のスペースはどのように見えますか? –

+0

カラムをタブで区切り、空白をスキップするだけで、カラムの外側にエントリが表示されないようにする必要があります。たとえば、最初のカラムにエントリがない場合は、 2番目の列は左に移動します。 – maxsch

答えて

0

直接ファイルの書き込みがあるかもしれない最も簡単な

In [233]: alist=[[1,2,3,4],[.2,.4,1.2],['a','b','c','d','e']] 
In [234]: import itertools 
In [235]: list(itertools.zip_longest(*alist)) 
Out[235]: 
[(1, 0.2, 'a'), 
(2, 0.4, 'b'), 
(3, 1.2, 'c'), 
(4, None, 'd'), 
(None, None, 'e')] 
In [236]: 
In [236]: list(itertools.zip_longest(*alist,fillvalue='')) 
Out[236]: [(1, 0.2, 'a'), (2, 0.4, 'b'), (3, 1.2, 'c'), (4, '', 'd'), ('', '', 'e')] 

今だけ(印刷用file.write代用)フォーマットされた行の書き込み:あなたのデータは以下のように探しているもの

In [238]: for line in itertools.zip_longest(*alist,fillvalue=''): 
    ...:  print('%5s, %5s, %5s'%tuple(line)) 
    ...:  
    1, 0.2,  a 
    2, 0.4,  b 
    3, 1.2,  c 
    4,  ,  d 
    ,  ,  e 
+0

それは動作します。ありがとうございました! – maxsch