Python中numpy.savetxt写入矩阵到txt时输出科学计数法的解决方法
问题原因
np.savetxt 函数默认采用科学计数法的浮点数格式化规则(默认格式符为%.18e)写入数据,即使传入的是整数类型数组,也会按照浮点数逻辑转换输出,因此会生成你看到的带长小数、e标识的科学计数法内容。
解决方案
调用np.savetxt时传入fmt参数,显式指定整数输出格式即可,最常用的普通十进制整数格式符为%d,修改后的可运行代码如下:
import numpy as np a = np.random.randint(1, 1000, size=(100, 30), dtype='int64') np.savetxt('filename.txt', a, fmt='%d')
可选配置说明
- 若需要调整列之间的分隔符,可额外传入
delimiter参数,例如要使用逗号分隔就设置delimiter=',',默认值为空格,不需要调整分隔规则时可省略该参数。 - 若需要让输出的数字对齐、固定位宽,可调整
fmt的格式写法,例如fmt='%4d'代表每个整数占4个字符宽度,不足时补前置空格,格式规则和C语言printf的格式化规则完全一致。
执行上述修改后,输出的文本文件中就会直接存储51、153这类普通整数值,不会再出现科学计数法格式的浮点数。
内容的提问来源于stack exchange,提问作者user11466982
相关产品推荐
相关产品推荐

