Python: как преобразовать список кортежей в массив NumPy - PullRequest
0 голосов
/ 12 марта 2019

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

[(341, 115), (174, 227), (457, 308)]

как мне преобразовать этот вид списка в массив numpy ?конечный результат должен выглядеть следующим образом:

[[341 115]
 [174 227]
 [457 308]]

Ответы [ 2 ]

1 голос
/ 12 марта 2019

Использование numpy:

lst = [(341, 115), (174, 227), (457, 308)]

import numpy as np
print(np.array(lst))

ВЫХОД :

[[341 115]
 [174 227]
 [457 308]]

Использование list comprehension:

print([list(lst) for lst in lst])

OUTPUT :

[[341, 115], [174, 227], [457, 308]]

EDIT :

Если это строка, на которую она не похожа в коде, вставленном в вопрос:

lst = "[(341, 115), (174, 227), (457, 308)]"

Тогда:

import numpy as np
from ast import literal_eval
print(np.array(literal_eval(lst)))

В конце концов (для понимания списка):

print([list(lst) for lst in literal_eval(lst)])
1 голос
/ 12 марта 2019

Используйте ast.literal_eval для преобразования строки (строки) в фактический объект списка и вызовите numpy.array непосредственно для него:

line = "[(341, 115), (174, 227), (457, 308)]"

from ast import literal_eval
import numpy as np

np.array(literal_eval(line))

Вывод:

array([[341, 115],
   [174, 227],
   [457, 308]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...