Изменить строковое представление списка в массив numpy? - PullRequest
0 голосов
/ 22 января 2020

У меня есть строковое представление списка, например, результат str([[1,2,3],[4,5,6]]); '[[1, 2, 3], [4, 5, 6]]'. Как я могу преобразовать это в numpy массив? Я попробовал следующий код.

import numpy as np

a = [[1,2,3],[4,5,6]]
b = str(a)
c = np.array(b, dtype=float)

Мой ожидаемый результат:

>>> c
array([[1, 2, 3],
       [4, 5, 6]])

Ответы [ 2 ]

0 голосов
/ 22 января 2020
import numpy as np
import json

a = [[1, 2, 3], [4, 5, 6]]
b = str(a)
c = np.array(json.loads(b), dtype=float)
0 голосов
/ 22 января 2020

Предполагая, что это действительно то, что вы хотите сделать, а не просто np.array(a), вы можете использовать ast.literal_eval() для преобразования b обратно в список следующим образом:

>>> import ast
>>> import numpy as np
>>> a = [[1,2,3],[4,5,6]]
>>> b = str(a)
>>> np.array(ast.literal_eval(b), dtype=float)
array([[1, 2, 3],
       [4, 5, 6]])
...