我有一个 txt(字符串)文件,如下所示:
[[[[0.17262284, 0.95086717, 0.01172171, 0.79262904],
[0.52454078, 0.16740103, 0.32694925, 0.78921072],
[0.77886716, 0.35550488, 0.89272706, 0.36761104]],
[[0.14336841, 0.94488079, 0.83388505, 0.02065268],
[0.31804594, 0.22056339, 0.84088501, 0.94994676],
[0.57845057, 0.12645735, 0.12628646, 0.05526736]]]]
形状是 (1,2,3,4)。
如何轻松将其转换为考虑数据类型和形状的 NumPy
数组(可以从括号中推断出)?
假设我在 txt 文件中有形状,它会更容易吗?
我试过使用 np.loadtxt
,似乎它不能处理这个 4d 形状,它作为 1D 数组加载。
我可以自己解析形状,然后将所有成员转换为 float ,但我相信已经有 np 函数可以做到这一点。该文件不是我创建的 - 我只是 pkl 数组。
最佳答案
可以使用 ast.literal_eval()
函数评估(“读取”)包含数组的文本字符串,然后将其包装在 numpy 数组构造函数中,如下所示:
import ast
import numpy as np
# Option 1: From a text string.
a = np.array(ast.literal_eval(txt))
# Option 2: Directly from text file.
a = np.array(ast.literal_eval(open('np_array.txt').read()))
a.shape
>>> (1, 2, 3, 4)
设置:
txt = """[[[[0.17262284, 0.95086717, 0.01172171, 0.79262904],
[0.52454078, 0.16740103, 0.32694925, 0.78921072],
[0.77886716, 0.35550488, 0.89272706, 0.36761104]],
[[0.14336841, 0.94488079, 0.83388505, 0.02065268],
[0.31804594, 0.22056339, 0.84088501, 0.94994676],
[0.57845057, 0.12645735, 0.12628646, 0.05526736]]]]"""
关于python - 将 4D float 组从 txt(字符串)文件转换为 numpy float 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64986545/