如何强制Python中Numpy数组的浮点数不使用科学计数法输出
问题翻译
我有一段代码,从文本格式读取数据并转换为浮点型Numpy数组,将数值乘以1000.0后打印该数组。我使用如下方式格式化数组输出(其中k为数组的标识字符串,v为数组本身):
out = f'{k.strip()} = ' + \ np.array2string(v, prefix=f'{k} = ', precision=5, max_line_width=200, floatmode='maxprec' ) + '\n'
我期望得到如下格式的输出:
New.vals = -80. -75. -70. -65. -60. -55. -50.
但实际输出通常采用科学计数法:
Typical.vals = -8.00E+01 -7.50E+01 -7.00E+01 -6.50E+01 -6.00E+01 -5.50E+01 -5.00E+01
请问如何强制输出不使用科学计数法?
解决方案
要强制Numpy数组输出时不使用科学计数法,可通过以下两种方式修改np.array2string的参数:
方法1:使用suppress=True参数
该参数会抑制科学计数法显示,结合已有参数即可得到普通小数格式输出:
out = f'{k.strip()} = ' + \ np.array2string(v, prefix=f'{k} = ', precision=1, # 匹配示例格式设置为1位小数,可按需调整 max_line_width=200, floatmode='maxprec', suppress=True # 关键参数:禁用科学计数法 ) + '\n'
方法2:自定义浮点数格式化器
如果需要更精细的格式控制,可通过formatter参数直接指定输出格式:
out = f'{k.strip()} = ' + \ np.array2string(v, prefix=f'{k} = ', max_line_width=200, formatter={'float': lambda x: '{:.1f}'.format(x)} # 自定义为1位小数格式 ) + '\n'
若需要整数格式,可将{:.1f}改为{:.0f},完全按需求调整格式规则即可。
内容的提问来源于stack exchange,提问作者Jiminion
相关产品推荐
相关产品推荐

