如何强制numpy数组打印时使用科学计数法
NumPy数组统一科学计数法打印解决方案
以下两种方案均可满足需求,可根据使用场景选择:
方案1:全局生效配置(推荐)
修改NumPy全局打印参数,后续所有数组打印默认都采用科学计数法格式:
- 配置代码:
import numpy as np # 可自行调整大括号内的格式规则,示例为保留6位小数的科学计数法 # 如需保留2位小数可修改为 '{:.2e}'.format np.set_printoptions(formatter={'float': '{:e}'.format})
- 效果测试:
test_arr = np.array([0.0000456, 3.45, 7890000]) print(test_arr) # 输出示例:[4.560000e-05 3.450000e+00 7.890000e+06]
- 恢复默认格式:
np.set_printoptions(formatter=None)
方案2:仅临时格式化单个数组(不影响全局配置)
如果只需要给指定数组做格式化输出,不需要改动全局设置,可选以下两种实现:
实现1:使用np.array2string
test_arr = np.array([0.0000456, 3.45, 7890000]) formatted_str = np.array2string(test_arr, formatter={'float': '{:.2e}'.format}) print(formatted_str) # 输出示例:[4.56e-05 3.45e+00 7.89e+06]
实现2:适配numpy.format_float_scientific到数组
如果你需要用到numpy.format_float_scientific的专属参数能力,可以用np.vectorize包装标量函数后处理数组:
import numpy as np from numpy import format_float_scientific # 包装为数组兼容的格式化函数 vec_sci_format = np.vectorize(lambda x: format_float_scientific(x, precision=2)) test_arr = np.array([0.0000456, 3.45, 7890000]) print(vec_sci_format(test_arr)) # 输出示例:['4.6e-05' '3.4e+00' '7.9e+06']
注意:该实现返回的是字符串数组,仅可用于打印输出,不能用于后续数值计算。
内容的提问来源于stack exchange,提问作者DavDap
相关产品推荐
相关产品推荐

