我有一个numpy数组,我试图写入文件
outfile.write(str(myarray))
但是,我得到的东西看起来像这样:
[ 4.275000000e01 2.345000000e01 3.2135000000e-02 ]
我的要求是:
通常,#2 不会那么难,但我不确定如何与#1 一起处理它。
编辑:我还希望将数组作为一行写在一行上。像这样:
4.27500000 2.34500000 0.03213500000
答案 0 :(得分:1)
如果通过写入文件表示文本文件,请使用numpy.savetxt:
import numpy as np
my_array = np.random.rand(10,4)
np.savetxt('my_filenmame',my_array,fmt='%4.6f',delimiter=' ')
会将my_array
写入my_filename
,最多6个十进制数字,在它们之间留下空格。
OP编辑后:如果要将整个数组写入一行,请确保您的数组只有一行:
np.savetxt('my_filenmame',my_array.reshape(1,rows*cols),fmt='%4.6f',delimiter=' ')
在这种情况下rows=10
和cols=4
。或者使用ravel
或flatten
(另请参阅@ Harpal的答案,尽管不能回答小数精度问题)
np.savetxt('my_filenmame',my_array.ravel(),fmt='%4.6f',delimiter=' ',newline=' ')
答案 1 :(得分:1)
试试这个:
>>> a = np.array([[1,2,3],[1,2,3],[1,2,3]])
>>> a
array([[1, 2, 3],
[1, 2, 3],
[1, 2, 3]])
>>> b = a.flatten()
>>> b
array([1, 2, 3, 1, 2, 3, 1, 2, 3])
>>> >>> np.savetxt("array.txt",b,delimiter=' ',newline=' ')
编辑在一行写作
答案 2 :(得分:1)
savetxt
相当于:
In [631]: x=np.array([4.275000000e01, 2.345000000e01, 3.2135000000e-02])
In [632]: '%10.6f %10.6f %10.6f'%tuple(x)
Out[632]: ' 42.750000 23.450000 0.032135'
In [642]: outfile.write((' '.join(['%10.6f ']*x.size)+'\n\n') % tuple(x))
42.750000 23.450000 0.032135
它将您的1d数组转换为元组并将其传递给格式语句,并为数组中的每个项目指定格式。