赞
踩
float转换str时,使用str()方法可以便捷的实现转换.但小数位太长的数会默认转换为科学计数法的格式,如:
>print(str(0.000001))
1e-06
实际应用中,这种形式的数据往往不是我们想要的.
本文要解决的问题是将一个str格式的带有科学计数法数值的二维数组转换为小数形式
输入数据(str) -999. 0. 0. 0. 0. 0. 0. 0. 0. 0. 5.00e-02 5.20e+01 2.55e+02 2.55e+02 2.55e+02 6.00e-02 6.90e+01 1.95e+02 2.53e+02 2.55e+02 8.00e-02 1.29e+02 2.21e+02 9.00e+01 2.55e+02 1.00e-01 2.55e+02 1.87e+02 1.50e+01 2.55e+02 1.50e-01 2.55e+02 6.90e+01 1.00e+00 2.55e+02 2.00e-01 2.55e+02 1.50e+02 1.50e+01 2.55e+02 0.4 255. 87. 15. 255. 期望输出(str) -999. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.05 52. 255. 255. 255. 0.06 69. 195. 253. 255. 0.08 129. 221. 90. 255. 0.1 255. 187. 15. 255. 0.15 255. 69. 1. 255. 0.2 255. 150. 15. 255. 0.4 255. 87. 15. 255.
查找到的方法有几种:
https://docs.python.org/3.4/library/string.html#format-specification-mini-language
> number = 0.0000001
> f"Number: {number}"
'Number: 1e-07'
> f"Number: {number:f}"
'Number: 0.000000'
> f"Number: {number:.10f}"
'Number: 0.0000001000'
只能用于单个浮点数操作
numpy取消科学计数法.
suppress=True 表示取消科学记数法
>import numpy as np
>np.set_printoptions(suppress=True, threshold=np.nan)
>import pandas as pd
>pd.set_option('display.float_format',lambda x : '%.3f' % x)
def table_process(table):
np.set_printoptions(suppress=True)
table_arr = np.fromstring(table, sep='\n')
table_arr = color_arr.reshape((table_arr.size//5, 5))
new_table = str(table_arr)
new_table = re.sub('\\[', '', new_table)
new_table = re.sub('\\]', '', new_table)
return new_table
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。