您可能想要的是将数据放入yaml 文件格式。它是一种文本数据格式,其结构基于 Python 等高级脚本语言。您可以在其中放置多个任意类型的二维数组。但是,由于它只是数据,而不是代码,因此它不像将数据直接放入 Python 脚本那样危险。它可以很容易地制作2D arrays,或更严格的嵌套列表(具体参见该链接中的示例 2.5),以及普通列表、字典、嵌套字典、字符串及其任何组合的等价物。由于您可以将一种数据类型嵌套在另一种数据类型中,因此您可以拥有一个二维数组字典,例如,它可以让您将多个数组放在一个文件中。
这是您在 yaml 中的示例:
Array1:
- [1, 0, 0, 0]
- [2, 1, 0, 0]
- [3, 0.3333333333325028, 0, 0]
- [4, 0.6666666666657888, 0, 0]
Array2:
- [1, 1, 1, 1]
- [2, 3, 1, 1]
- [3, 2, 2, 2]
- [4, 3, 2, 2]
- [5, 1, 1, 3]
- [6, 1, 3, 4]
- [7, 1, 4, 2]
下面是如何使用 PyYaml 包将其读入 numpy 数组(在我的示例中,该文件称为“temp.yaml”):
>>> import yaml
>>>
>>> with open('temp.yaml') as ym:
.... res = yaml.load(ym)
>>> res
{'Array1': [[1, 0, 0, 0],
[2, 1, 0, 0],
[3, 0.3333333333325028, 0, 0],
[4, 0.6666666666657888, 0, 0]],
'Array2': [[1, 1, 1, 1],
[2, 3, 1, 1],
[3, 2, 2, 2],
[4, 3, 2, 2],
[5, 1, 1, 3],
[6, 1, 3, 4],
[7, 1, 4, 2]]}
>>> array1 = np.array(res['Array1'])
>>> array2 = np.array(res['Array2'])
>>> print(array1)
[[ 1. 0. 0. 0. ]
[ 2. 1. 0. 0. ]
[ 3. 0.33333333 0. 0. ]
[ 4. 0.66666667 0. 0. ]]
>>> print(array2)
[[1 1 1 1]
[2 3 1 1]
[3 2 2 2]
[4 3 2 2]
[5 1 1 3]
[6 1 3 4]
[7 1 4 2]]