numpy.savetxt-将一列保存为int,其余列为浮点数?

时间:2016-10-13 20:34:34

标签: python arrays numpy text-files number-formatting

问题

所以我有一个2D数组(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%格式错误:%i%1.4f"

问题

我是否有办法将第一列保存为整数,其余列保存为浮点数?

3 个答案:

答案 0 :(得分:10)

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

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

应该有效。如果你有超过3列,你可以尝试类似:

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

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

与@wflynny一样,但没有加入:

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