如何让Python中的NumPy数组不显示e+00这类科学计数法格式?
如何将NumPy数组的科学计数法显示改为常规数字格式?
你使用np.column_stack生成的NumPy数组默认以科学计数法显示,例如:
f = np.array([[3.00000000e+00, 9.04392878e+00, 8.69169589e+00, 1.20000000e+04, 7.00000000e+00, 7.21376000e+07, 3.00000000e+00], [2.00000000e+00, 6.38373979e+00, 7.75724682e+00, 1.40000000e+04, 9.00000000e+00, 8.25648000e+07, 2.00000000e+00]])
希望改为常规数字格式,比如:
f = np.array([[3, 9.04392877641821 , 8.691695889412165, 12000, 7, 72137600, 3],[2, ...]])
可以通过以下几种方法实现:
修改全局打印选项
使用np.set_printoptions配置全局输出格式,抑制科学计数法并设置小数精度:import numpy as np # 抑制科学计数法,保留10位小数 np.set_printoptions(suppress=True, precision=10) print(f)配置后,后续所有NumPy数组的打印都会遵循这个格式,整数会自动显示为整数形式,小数保留指定位数。
单个数组自定义格式化输出
若不想修改全局设置,可使用np.array2string针对单个数组定制输出:print(np.array2string(f, suppress_small=True, precision=10, separator=', '))参数说明:
suppress_small=True:抑制极小值的科学计数法precision=10:控制小数显示的位数separator=', ':设置元素间的分隔符
转换为混合数据类型(可选)
如果数组中的整数都是精确值,可以将数组转换为object类型,让整数以整数形式显示,小数保留原精度:f_mixed = f.astype(object) # 手动修正整数元素,确保显示为int类型 for row in f_mixed: for i in range(len(row)): if row[i].is_integer(): row[i] = int(row[i]) print(f_mixed)注意:这种方法会改变数组的数据类型,可能影响后续数值计算的性能,仅在需要格式化显示且不频繁计算时使用。
内容的提问来源于stack exchange,提问作者Agustin
相关产品推荐
相关产品推荐

