Python:将numpy数组内容写入文件

时间:2015-08-18 21:34:02

标签: python arrays numpy io

我有一个numpy数组,我试图写入文件

outfile.write(str(myarray))

但是,我得到的东西看起来像这样:

[    4.275000000e01   2.345000000e01  3.2135000000e-02    ]

我的要求是:

  1. 在数组中写入数据(而不是数组大括号[])
  2. 使用一定数量的尾随小数位(例如6)
  3. 写入数据

    通常,#2 不会那么难,但我不确定如何与#1 一起处理它。

    编辑:我还希望将数组作为一行写在一行上。像这样:

    4.27500000  2.34500000  0.03213500000
    

3 个答案:

答案 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=10cols=4。或者使用ravelflatten(另请参阅@ 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数组转换为元组并将其传递给格式语句,并为数组中的每个项目指定格式。