我想将numpy.savetxt的结果加载到字符串中。基本上以下代码没有中间文件:
import numpy as np
def savetxts(arr):
np.savetxt('tmp', arr)
with open('tmp', 'rb') as f:
return f.read()
答案 0 :(得分:7)
对于 Python 3.x ,您可以使用io
模块:
>>> import io
>>> s = io.BytesIO()
>>> np.savetxt(s, (1, 2, 3), '%.4f')
>>> s.getvalue()
b'1.0000\n2.0000\n3.0000\n'
>>> s.getvalue().decode()
'1.0000\n2.0000\n3.0000\n'
注意:我无法让io.StringIO()
工作。有什么想法吗?
答案 1 :(得分:4)
您可以使用StringIO(或cStringIO):
该模块实现了一个类文件类StringIO,它读写字符串缓冲区(也称为内存文件)。
模块的描述说明了一切。只需将StringIO
的实例传递给np.savetxt
而不是文件名:
>>> s = StringIO.StringIO()
>>> np.savetxt(s, (1,2,3))
>>> s.getvalue()
'1.000000000000000000e+00\n2.000000000000000000e+00\n3.000000000000000000e+00\n'
>>>
答案 2 :(得分:0)
查看array_str或array_repr:http://docs.scipy.org/doc/numpy/reference/routines.io.html
答案 3 :(得分:0)
只需将带有解码的先前答案扩展到UTF8即可生成字符串。对于将数据导出到可读文本文件非常有用。
import io
import numpy as np
s = io.BytesIO()
np.savetxt(s, np.linspace(0,10, 30).reshape(-1,3), delim=',' '%.4f')
outStr = s.getvalue().decode('UTF-8')