我有一个.txt文件,其中写入了数千张量。我的问题是它们都是以以下格式(它是字符串)编写的:
' tensor([ 9.8228e-01, -2.6578e-01, 9.6711e-01,........, -0.3274, -0.3205])'
如何将其转换为浮点数数组?我在处理“ e-01”零件时也遇到问题。
非常感谢您!
答案 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
部分。