1. ホーム
  2. python

Python numpy.savetxtを使って文字列と浮動小数点数をASCIIファイルに書き込むには?

2023-09-10 12:35:10

質問

以下のような文字列と浮動小数点数の両方を含む一連のリストがあります。

import numpy as num

NAMES  = num.array(['NAME_1', 'NAME_2', 'NAME_3'])
FLOATS = num.array([ 0.5    , 0.2     , 0.3     ])

DAT =  num.column_stack((NAMES, FLOATS))

この2つのリストを重ねて、カラムの形式でテキストファイルに書き出したいので numpy.savetxt (可能であれば)を使ってこれを行いたいと思います。

num.savetxt('test.txt', DAT, delimiter=" ") 

これを実行すると、以下のようなエラーが発生します。

>>> num.savetxt('test.txt', DAT, delimiter=" ") 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Python/2.7/site-packages/numpy-1.8.0.dev_9597b1f_20120920-py2.7-macosx-10.8-x86_64.egg/numpy/lib/npyio.py", line 1047, in savetxt
    fh.write(asbytes(format % tuple(row) + newline))
TypeError: float argument required, not numpy.string_

理想的な出力ファイルは次のようなものです。

NAME_1    0.5
NAME_2    0.2
NAME_3    0.3

文字列と浮動小数点数の両方をテキストファイルに書き込むにはどうしたらよいでしょうか。これを行うための他の方法はありますか? numpy.savetxt ?

どのように解決するのですか?

フォーマットを指定する必要があります ( fmt ) を指定する必要があります。 savetxt にあるデータ、この場合は文字列として ( %s ):

num.savetxt('test.txt', DAT, delimiter=" ", fmt="%s") 

デフォルトのフォーマットはfloatで、これが文字列ではなくfloatを期待した理由であり、エラーメッセージの説明でもあります。