Numpy savetxt到一个字符串

时间:2014-03-12 14:43:31

标签: python numpy

我想将numpy.savetxt的结果加载到字符串中。基本上以下代码没有中间文件:

import numpy as np

def savetxts(arr):
    np.savetxt('tmp', arr)
    with open('tmp', 'rb') as f:
        return f.read()

4 个答案:

答案 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)

答案 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')