问题
所以我有一个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"
问题
我是否有办法将第一列保存为整数,其余列保存为浮点数?
答案 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)