我有一组包含字符串和浮点数的列表,例如:
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 吗?
您必须在中将fmt数据的格式()指定savetxt为字符串(%s):
fmt
savetxt
%s
num.savetxt('test.txt', DAT, delimiter=" ", fmt="%s")
默认格式是浮点数,这就是它期望使用浮点数而不是字符串的原因,并说明了错误消息。