代码之家  ›  专栏  ›  技术社区  ›  Tom Kurushingal

如何在写入文件时舍入numpy堆栈数组?

  •  4
  • Tom Kurushingal  · 技术社区  · 11 年前

    我试图使用numpy.column_stack将多个数组写入一个文件,但无法将其舍入为两位小数。以下是可复制代码:

    import numpy as np
    A = np.array([1.1334, 4.10343, 12.4343])
    B = np.array([2.1334, 5.12343, 16.23543])
    C = np.array([4.1334, 4.3563, 18.36343])
    np.savetxt('data.dat', np.around(np.column_stack((A, B, C)), decimals=2))
    

    输出

    1.129999999999999893e+00 2.129999999999999893e+00 4.129999999999999893e+00
    4.099999999999999645e+00 5.120000000000000107e+00 4.360000000000000320e+00
    1.242999999999999972e+01 1.623999999999999844e+01 1.835999999999999943e+01
    

    简而言之,我希望将条目四舍五入到两位小数,并且可以使用此方法制表分隔条目吗。

    2 回复  |  直到 11 年前
        1
  •  3
  •   Mazdak    11 年前

    你需要使用 fmt 在您的 savetext 函数,因此添加 fmt='%.2f' 在内部 存储文本 ,并且为了获得更优雅的结果,您可以指定 delimiter 标志也是:

    np.savetxt('data.dat', np.around(np.column_stack((A, B, C)), decimals=2),fmt='%.2f',delimiter='\t')
    

    结果:

    1.13    2.13    4.13
    4.10    5.12    4.36
    12.43   16.24   18.36
    

    numpy.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', header='', footer='', comments='# ')

    将数组保存到文本文件。

        2
  •  1
  •   user3590169    11 年前

    您需要将格式指定为np.savetxt

    np.savetxt('data.dat', np.around(np.column_stack((A, B, C)), decimals=2), fmt="%.2f")