Как извлечь массив из текстового файла - PullRequest
0 голосов
/ 29 октября 2019

У меня есть файл .txt с тысячами тензоров, написанных внутри. Моя проблема в том, что все они написаны в следующем формате (это строка):

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

Как я могу преобразовать это в массив с плавающей точкой? У меня есть проблемы с обработкой деталей 'e-01'.

Большое спасибо!

1 Ответ

0 голосов
/ 29 октября 2019

Вы можете просто 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...