Python, как преобразовать массив [(a, b, c) (d, e, f) (g, h, k)] в numpy [[a, b, c], [d, e, f], [ G, H, K]] - PullRequest
0 голосов
/ 28 июня 2018

Я работаю над проблемой визуализации трехмерных наборов точек в реальном времени, и мне нужно преобразовать облако точек в определенный формат. Например, исходные данные, которые я получаю, имеют вид

[(-1.3604002, -1.0681801, 1.8390535) (-5.5378942, -4.362379 , 7.5151973)
 (-0.       , -0.       , 0.       ) ...
 ( 0.       ,  0.       , 0.       ) ( 0.       ,  0.       , 0.       )
 ( 0.       ,  0.       , 0.       )]

в формате (307200,).
Я ищу быстрый способ преобразовать эти данные в формат типа (307200,3) numpy array без использования цикла for для прохождения каждой точки. Спасибо.

1 Ответ

0 голосов
/ 28 июня 2018

Я не уверен, что не следует проходить через каждую точку, потому что в какой-то момент Python должен будет просмотреть каждое значение, чтобы поместить его в новый массив, но вы можете использовать понимание списка вместо цикла for. Они делают то же самое, но один выглядит намного лучше.

import numpy

lst = [(1,2,3), (4,5,6)]

lst = [numpy.asarray(e) for e in lst]

print(lst)
# [[1,2,3], [4,5,6]]
...