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

How to round a numpy stacked array when written to file?

我正在尝试使用 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

简而言之,我想将条目四舍五入到小数点后两位,是否可以使用此方法制表符分隔条目。

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

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

您需要在 savetext 函数中使用具有正确格式的 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='# ')

Save an array to a text file.