使用 Python 将浮点数转储到 YAML 文件中的特定精度
Dump float to specific precision in YAML file with Python
如何使用 ruamel.yaml
指定应将浮点数转储到 YAML 文件中的精度?
例如,这个:
import sys
import numpy as np
from ruamel.yaml import YAML
yaml = YAML()
my_arr = np.random.random((1, 3))
yaml.dump(my_arr.tolist(), sys.stdout)
可能输出:
- - 0.16197964351016936
- 0.6259092493078636
- 0.4335685294945195
如何选择要在此类 YAML 输出中包含多少位小数?
如果你想要ruamel.yaml的特定浮点数格式,但不知道如何实现,那么
首先检查它是否往返并且 ruamel.yaml 可以保留格式:
import sys
import ruamel.yaml
yaml_str = """\
- - 0.16197
- 0.6259
- 0.433
"""
yaml = ruamel.yaml.YAML()
data = yaml.load(yaml_str)
yaml.dump(data, sys.stdout)
给出:
- - 0.16197
- 0.6259
- 0.433
如您所见,ruamel.yaml 保留了每个标量浮点数的各自长度。
然后你可以使用print(type(data[0][0]))
检查data
,它会告诉你
这些序列元素被加载到 ScalarFloat
个实例的列表中。那些
可以使用宽度和精度实例化实例
import sys
import random
import ruamel.yaml
data = [[]]
for x in range(3):
data[0].append(ruamel.yaml.scalarfloat.ScalarFloat(random.random(), width=7-x, prec=1))
yaml = ruamel.yaml.YAML()
yaml.dump(data, sys.stdout)
这给出了:
- - 0.59012
- 0.7968
- 0.079
如何使用 ruamel.yaml
指定应将浮点数转储到 YAML 文件中的精度?
例如,这个:
import sys
import numpy as np
from ruamel.yaml import YAML
yaml = YAML()
my_arr = np.random.random((1, 3))
yaml.dump(my_arr.tolist(), sys.stdout)
可能输出:
- - 0.16197964351016936
- 0.6259092493078636
- 0.4335685294945195
如何选择要在此类 YAML 输出中包含多少位小数?
如果你想要ruamel.yaml的特定浮点数格式,但不知道如何实现,那么 首先检查它是否往返并且 ruamel.yaml 可以保留格式:
import sys
import ruamel.yaml
yaml_str = """\
- - 0.16197
- 0.6259
- 0.433
"""
yaml = ruamel.yaml.YAML()
data = yaml.load(yaml_str)
yaml.dump(data, sys.stdout)
给出:
- - 0.16197
- 0.6259
- 0.433
如您所见,ruamel.yaml 保留了每个标量浮点数的各自长度。
然后你可以使用print(type(data[0][0]))
检查data
,它会告诉你
这些序列元素被加载到 ScalarFloat
个实例的列表中。那些
可以使用宽度和精度实例化实例
import sys
import random
import ruamel.yaml
data = [[]]
for x in range(3):
data[0].append(ruamel.yaml.scalarfloat.ScalarFloat(random.random(), width=7-x, prec=1))
yaml = ruamel.yaml.YAML()
yaml.dump(data, sys.stdout)
这给出了:
- - 0.59012
- 0.7968
- 0.079