如何从文本文件中提取数组

时间:2019-10-29 10:11:41

标签: python-3.x numpy

我有一个.txt文件,其中写入了数千张量。我的问题是它们都是以以下格式(它是字符串)编写的:

' tensor([ 9.8228e-01, -2.6578e-01,  9.6711e-01,........, -0.3274, -0.3205])'

如何将其转换为浮点数数组?我在处理“ e-01”零件时也遇到问题。

非常感谢您!

1 个答案:

答案 0 :(得分:0)

您只需map()float,即可将,[之间的子字符串分割为]而获得的字符串:

s = 'tensor([ 9.8228e-01, -2.6578e-01,  9.6711e-01, -0.3274, -0.3205])'

list(map(float, s[s.find('[') + 1:s.find(']')].split(',')))
# [0.98228, -0.26578, 0.96711, -0.3274, -0.3205]

或进入NumPy数组:

import numpy as np


np.fromiter(map(float, s[s.find('[') + 1:s.find(']')].split(',')), dtype=float)
# array([ 0.98228, -0.26578,  0.96711, -0.3274 , -0.3205 ])

编辑

NumPy使用np.fromstring()提供了更快的选择:

np.fromstring(s[s.find('['):], dtype=float, sep=', ')

实质上是上述内容的优化版本。请注意,您仍然需要删除字符串的tensor部分。