我想將numpy.savetxt的結果加載到字符串中。基本上沒有中間文件,下面的代碼:numpy savetxt到字符串
import numpy as np
def savetxts(arr):
np.savetxt('tmp', arr)
with open('tmp', 'rb') as f:
return f.read()
我想將numpy.savetxt的結果加載到字符串中。基本上沒有中間文件,下面的代碼:numpy savetxt到字符串
import numpy as np
def savetxts(arr):
np.savetxt('tmp', arr)
with open('tmp', 'rb') as f:
return f.read()
可以使用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'
>>>
看一看array_str或array_repr:http://docs.scipy.org/doc/numpy/reference/routines.io.html
默認情況下,這兩個函數縮短它們的輸出,這通常不是你想要的。你可以使用'numpy.set_printoptions'來調整他們的輸出,但是這感覺像是一個黑客。 –
對於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()
到工作。有任何想法嗎?
正如@ Tom-pohl提到的那樣,它不適用於'StringIO',但它可以與使用python3的'BytesIO'協同工作。你知道爲什麼它不起作用嗎? – Ger
@Ger對不起,我對python3沒有太多的經驗。 – sloth