numpy.savetxt- 将一列保存为 int,将其余列保存为 float?

numpy.savetxt- Save one column as int and the rest as floats?

问题

所以我有一个二维数组(151 行,52 列),我想使用 np.savetxt 保存为文本文件。但是,我希望第一列的数字保存为整数(1950、1951 等),而其余数据保存为精度 5(如果四舍五入则为 4)浮点数(2.7419、2.736 等)。我不知道该怎么做。

代码

当我打印数组输出的前 4 行和 3 列时,它看起来像这样。

[[ 1950.2.7407 2.7396]

[ 1951. 2.7419 2.736 ]

[ 1952. 2.741 2.7374]

[ 1953.2.7417 2.7325]]

当我使用以下...

np.savetxt('array.txt',data,fmt="%1.4f")

数组将第一列保存为精度为 5 的浮点数,与其余数据(1950.0000、1951.0000 等)一样。当我尝试指定不同的格式时...

np.savetxt('array.txt',data,fmt="%i %1.4f")

我收到以下错误:"ValueError: fmt has wrong number of % formats: %i %1.4f"

问题

有没有一种方法可以将第一列保存为整数,将其余列保存为浮点数?

data 有 3 列,因此您需要提供 3 '%format'。例如:

np.savetxt('array.txt', data, fmt='%i %1.4f %1.4f')

应该可以。如果你有很多超过 3 列,你可以尝试这样的东西:

np.savetxt('array.txt', data, fmt=' '.join(['%i'] + ['%1.4f']*N))

其中 N 是需要浮点格式的列数。

您的 fmt 参数需要与您尝试格式化的列具有相同数量的 %。您正在尝试格式化 3 列,但只给它 2 种格式。

尝试将您的 np.savetxt(...) 更改为

np.savetxt('array.txt',data,fmt="%i %1.4f %1.4f")

作为@wflynny 但没有加入:

np.savetxt('array.txt', data, fmt='%i'+' %1.4f'*N)

在我的例子中,我的数据矩阵的列是自动连接的,这是我不想要的。 要使格式与单独的列保持一致,您可以添加分隔符“;”。 解决方案如下所示:

np.savetxt('array.txt',data,fmt='%i' + ';%1.4f' * 4)

p.s。我保存为 .csv