使用Python将浮点值转储到YAML文件中的特定精度

2024-05-19 22:26:39 发布

您现在位置: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输出中包含多少小数位


Tags: 文件fromimportnumpyyamlmyasnp
1条回答
网友
1楼 · 发布于 2024-05-19 22:26:39

如果您需要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

相关问题 更多 >