python - 将 4D float 组从 txt(字符串)文件转换为 numpy float 组

标签 python python-3.x numpy

我有一个 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/

相关文章:

python - 有没有办法将 KeyboardInterrupt 发送到 Sublime Text 中正在运行的 Python 脚本?

python-3.x - Python3 : ValueError: too many values to unpack (expected 2)

python-3.x - 如何返回索引大于整数且小于上一个索引的列值?

python - 沿排序的二维 numpy 数组的轴查找第一个非零值

python - 属性错误: 'datetime.time' object has no attribute 'time'

Python从POST请求接收formData,获取流,文件损坏

python - 反转给定索引之间的数组

python - 如何在python中获取对象的属性

python - Numpy Broadcast_to((50000,), (50000,32,32,3)) 失败。为什么?

python - Numpy:将一维数组作为二维数组而不进行整形