Если я скопирую и вставлю ваш образец в сеанс Python, я получу кортеж из 4 списков:
In [685]: [(-80983.957, 175470.593, 393.486), (-80994.122, 175469.889, 394.391), (-80996.591, 1754
...: 69.757, 394.595), (-81006.72, 175469.298, 395.527), (-81019.538, 175468.399, 396.847), (
...: -81025.594, 175467.643, 397.395), (-81030.366, 175467.25, 397.858), (-81030.455, 175467.
...: 776, 397.886), (-81033.209, 175470.89, 398.192)], [(-81037.166, 175471.423, 398.729), (-
...: 81037.911, 175471.237, 398.764), (-81038.01, 175472.285, 398.533)], [(-81030.537, 175472
...: .562, 397.951), (-81029.792, 175472.896, 397.842), (-81029.668, 175472.131, 397.895)], [
...: (-80847.281, 175417.644, 378.2), (-80853.651, 175417.621, 378.781)]
Out[685]:
([(-80983.957, 175470.593, 393.486),
(-80994.122, 175469.889, 394.391),
(-80996.591, 175469.757, 394.595),
(-81006.72, 175469.298, 395.527),
(-81019.538, 175468.399, 396.847),
(-81025.594, 175467.643, 397.395),
(-81030.366, 175467.25, 397.858),
(-81030.455, 175467.776, 397.886),
(-81033.209, 175470.89, 398.192)],
[(-81037.166, 175471.423, 398.729),
(-81037.911, 175471.237, 398.764),
(-81038.01, 175472.285, 398.533)],
[(-81030.537, 175472.562, 397.951),
(-81029.792, 175472.896, 397.842),
(-81029.668, 175472.131, 397.895)],
[(-80847.281, 175417.644, 378.2), (-80853.651, 175417.621, 378.781)])
np.vstack
отлично справляется с преобразованием этого в 2d массив:
In [686]: np.vstack(_)
Out[686]:
array([[-80983.957, 175470.593, 393.486],
[-80994.122, 175469.889, 394.391],
[-80996.591, 175469.757, 394.595],
[-81006.72 , 175469.298, 395.527],
[-81019.538, 175468.399, 396.847],
[-81025.594, 175467.643, 397.395],
[-81030.366, 175467.25 , 397.858],
[-81030.455, 175467.776, 397.886],
[-81033.209, 175470.89 , 398.192],
[-81037.166, 175471.423, 398.729],
[-81037.911, 175471.237, 398.764],
[-81038.01 , 175472.285, 398.533],
[-81030.537, 175472.562, 397.951],
[-81029.792, 175472.896, 397.842],
[-81029.668, 175472.131, 397.895],
[-80847.281, 175417.644, 378.2 ],
[-80853.651, 175417.621, 378.781]])
Пара объяснений
В большинстве случаев разделение объектов Python запятой приводит к кортежу (даже без () `:
In [687]: x = [1,2,3],[4,5,6,6]
In [688]: x
Out[688]: ([1, 2, 3], [4, 5, 6, 6])
vstack
итерирует по входному списку или кортежу и превращает каждый элемент в двумерный массив. Затем он объединяет их вдоль 1-й оси.
In [690]: [np.atleast_2d(i) for i in x]
Out[690]: [array([[1, 2, 3]]), array([[4, 5, 6, 6]])]
В этом случае конкатенация не будет работать, поскольку количество столбцов не совпадает; в вашем 4 списках содержится несколько наборов из 3 элементов, поэтому они становятся (n, 3) массивами.