我有一组包含字符串和浮点数的列表,例如:
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?
4条答案
按热度按时间sgtfey8w1#
您必须在
savetxt
中指定数据的格式(fmt
),在本例中为字符串(%s
):字符串
默认格式是float,这就是它期望float而不是字符串的原因,并解释了错误消息。
bq3bfh9z2#
目前接受的答案实际上并没有解决这个问题,即如何保存既包含字符串又包含浮点数的列表。为了完整起见,我提供了一个完整的工作示例,它基于@joris comment中给出的链接,并进行了一些修改。
字符串
**更新:**这个例子在Python 3中也可以正常工作,当创建
ab
structured array时,使用'U6'
Unicode字符串dtype,而不是'S6'
字节字符串。后一个dtype在Python 2.7中可以工作,但在Python 3中会写像b'NAME_1'
这样的字符串。bsxbgnwa3#
字符串
此示例用于numpy.savetxt将字符串和浮点数写入文件,特别是写入行中的字符串。
hfsqlsce4#
实际上有一个header参数:
字符串