繁体   English   中英

python numpy savetxt

[英]python numpy savetxt

有人能说出我在做错了吗?

import numpy as np

a = np.array([1,2,3,4,5],dtype=int)
b = np.array(['a','b','c','d','e'],dtype='|S1')

np.savetxt('test.txt',zip(a,b),fmt="%i %s")

输出是:

Traceback (most recent call last):
  File "loadtxt.py", line 6, in <module>
    np.savetxt('test.txt',zip(a,b),fmt="%i %s")
  File "/Users/tom/Library/Python/2.6/site-packages/numpy/lib/io.py", line 785, in savetxt
    fh.write(format % tuple(row) + '\n')
TypeError: %d format: a number is required, not numpy.string_

您需要以不同方式构造数组:

z = np.array(zip([1,2,3,4,5], ['a','b','c','d','e']), dtype=[('int', int), ('str', '|S1')])
np.savetxt('test.txt', z, fmt='%i %s')

当你传递一个序列时, savetext执行asarray(sequence)调用 ,结果数组的类型为|S4 ,即所有元素都是字符串! 这就是你看到这个错误的原因。

如果要保存CSV文件,还可以使用函数rec2csv(包含在matplotlib.mlab中)

>>> from matplotlib.mlab import rec2csv
>>> rec = array([(1.0, 2), (3.0, 4)], dtype=[('x', float), ('y', int)])
>>> rec = array(zip([1,2,3,4,5], ['a','b','c','d','e']), dtype=[('x', int), ('y', str)])
>>> rec2csv(rec, 'recordfile.txt', delimiter=' ')

希望有一天,pylab的开发人员将为编写csv文件实现一个不错的支持。

我认为你遇到的问题是你正在通过格式化字符串传递元组,它无法用%i来解释元组。 尝试使用fmt =“%s”,假设这是您要查找的输出:

1 a
2 b
3 c
4 d
5 e

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM