我有一组包含字符串和浮点数列表,如:如何使用python numpy.savetxt将字符串和浮点数写入ASCII文件?
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))
我想这两个列表堆叠在一起,并将其写入列形式的文本文件;因此,我想使用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
我如何写字符串和浮点数来一个文本文件,可能避免使用csv(我想让其他人可读)?是否有另一种方式,而不是使用numpy.savetxt?
如果我想格式化数字,会发生什么?我怎样才能只给一些格式的数字? – skytux
你可以给不同的列设置不同的格式,比如'fmt =“%f%i”'。但是如果你想像上面的例子那样把它和字符串结合起来,你需要一个结构化数组(参见[here](http://numpy-discussion.10968.n7.nabble.com/using-numpy-savetxt-to -save柱- - 数字值和柱-的文本值-td12304.html的#无))。在这个例子中,int被转换为一个字符串,然后不再可能以int格式化。 – joris