Преобразование огромного txt-файла с координатами x, y, z в np.arrays - PullRequest
0 голосов
/ 16 января 2020

, поэтому у меня есть огромный .txt-файл с примерно 4 000 000 координат в следующем формате:

315987 5587999 718.80
315988 5587999 718.87
315989 5587999 719.03
315990 5587999 718.94
315991 5587999 718.97
...

Итак, теперь моя задача - прочитать эти координаты из этого txt-файла с помощью python Создайте сценарий и сохраните данные для каждой оси в кортеже (массиве np), чтобы я мог использовать такие методы, как np.flatten для кортежей.

Для этих задач я нашел много ответов на stackoverflow, но каким-то образом это было немного сбивает с толку, и я не смог реализовать его так, как хотел.

Вот мой код:

def get_stl():

with open('test.txt') as f:
    for line in f:
        x, y, z = (float(a) for a in line.split())

    X, Y = np.meshgrid(x, y, z)
    Z = z;
    return X, Y, Z

x, y, z = get_stl()

xyz = np.zeros(shape=(x.size, 3))
xyz[:, 0] = x.flatten()
xyz[:, 1] = y.flatten()
xyz[:, 2] = z.flatten()

Так что, очевидно, z.flatten() не может быть выполнен, потому что я не читал в z как np.array.

Мой вопрос заключается в том, как правильно читать в этом большом txt.file и особенно в z-координате.

Спасибо!

РЕДАКТИРОВАТЬ :

Я не хочу использовать CSV из-за использования памяти

1 Ответ

1 голос
/ 16 января 2020
import numpy as np
data = np.genfromtxt('test.txt', delimiter=' ')

array([[3.159870e+05, 5.587999e+06, 7.188000e+02],
       [3.159880e+05, 5.587999e+06, 7.188700e+02],
       [3.159890e+05, 5.587999e+06, 7.190300e+02],
       [3.159900e+05, 5.587999e+06, 7.189400e+02],
       [3.159910e+05, 5.587999e+06, 7.189700e+02]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...