Vic*_*tor 63 python numpy list output
我有一组包含字符串和浮点数的列表,例如:
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))
Run Code Online (Sandbox Code Playgroud)
我想将这两个列表堆叠在一起,并以列的形式将它们写入文本文件; 因此,我想使用numpy.savetxt(如果可能的话)来做到这一点.
num.savetxt('test.txt', DAT, delimiter=" ")
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我收到以下错误:
>>> 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_
Run Code Online (Sandbox Code Playgroud)
理想的输出文件如下所示:
NAME_1 0.5
NAME_2 0.2
NAME_3 0.3
Run Code Online (Sandbox Code Playgroud)
如何将字符串和浮点数写入文本文件,可能避免使用csv(我想让其他人可读)?有没有另一种方法来做这个而不是使用numpy.savetxt?
jor*_*ris 106
您必须指定数据的格式(fmt)savetxt,在本例中为string(%s):
num.savetxt('test.txt', DAT, delimiter=" ", fmt="%s")
Run Code Online (Sandbox Code Playgroud)
默认格式是float,这是它期望浮点而不是字符串的原因,并解释了错误消息.
div*_*nex 31
当前接受的答案实际上并未解决该问题,该问题询问如何保存包含字符串和浮点数的列表.为了完整起见,我提供了一个完整的工作示例,该示例基于@joris comment中给出的链接进行了一些修改.
import numpy as np
names = np.array(['NAME_1', 'NAME_2', 'NAME_3'])
floats = np.array([ 0.1234 , 0.5678 , 0.9123 ])
ab = np.zeros(names.size, dtype=[('var1', 'U6'), ('var2', float)])
ab['var1'] = names
ab['var2'] = floats
np.savetxt('test.txt', ab, fmt="%10s %10.3f")
Run Code Online (Sandbox Code Playgroud)
更新:在创建结构化数组时,此示例也可以通过使用'U6'Unicode字符串dtype在Python 3中正常工作,而不是字节字符串.后一种dtype可以在Python 2.7中使用,但是会像Python 3 那样编写字符串.ab 'S6'b'NAME_1'
| 归档时间: |
|
| 查看次数: |
131486 次 |
| 最近记录: |