преобразовать текстовый файл в массив NumPy - PullRequest
1 голос
/ 13 мая 2019

У меня большой текстовый файл, и я извлек его часть с помощью следующего кода: Мои извлеченные данные имеют следующую структуру, и я хочу сохранить каждый столбец, включая числа, как отдельный вектор для выполнения некоторых модификаций.Я был бы очень благодарен, если бы кто-нибудь сказал мне, как я могу это сделать.

code:

coordinate=[]
with open('logfile.txt','r') as file:
    for line in file.readlines():
        if line[0:2]=="Pt":
            coordinate.append(line)
coordinate = [x.strip() for x in coordinate]
coordinate_new=np.array(coordinate)
`````````````````````````````````````````````````````````````````
extracted data:

Pt      13.85929291      -8.31557575     -13.72000000
Pt      13.85929291      -5.54371716     -13.72000000
Pt      13.85929291      -2.77185858     -13.72000000
Pt      13.85929291      -0.00000000     -13.72000000
Pt      13.85929291       2.77185858     -13.72000000
Pt      13.85929291       5.54371716     -13.72000000
Pt      13.85929291       8.31557575     -13.72000000
Pt      13.85929291      11.08743433     -13.72000000
Pt     -12.47336362     -12.47336362       0.00000000
Pt     -12.47336362      -9.70150504       0.00000000
Pt     -12.47336362      -6.92964646       0.00000000
Pt     -12.47336362      -4.15778787       0.00000000
Pt     -12.47336362      -1.38592929       0.00000000
Pt     -12.47336362       1.38592929       0.00000000
Pt     -12.47336362       4.15778787       0.00000000
Pt     -12.47336362       6.92964646       0.00000000
Pt     -12.47336362       9.70150504       0.00000000
Pt     -12.47336362      12.47336362       0.00000000
Pt      -9.70150504     -12.47336362       0.00000000
Pt      -9.70150504      -9.70150504       0.00000000
Pt      -9.70150504      -6.92964646       0.00000000

```````````````````````````````

Ответы [ 2 ]

0 голосов
/ 14 мая 2019

Вы можете использовать numpy.loadtxt:

import numpy as np

c1,c2,c3 = np.loadtxt('logfile.txt', usecols=(1, 2, 3), unpack=True)
0 голосов
/ 14 мая 2019

Это может быть один из способов решения вашей проблемы,

lists = []
lst_not_append = True

with open('logfile.txt','r') as file:
    lines = file.readlines()
    no = len(lines[0].split())
    if lst_not_append:
        for i in range(no):
            lists.append([])

    for line in lines:
        for i, l in enumerate(line.split()):
            lists[i].append(l)

    arrs = np.array(lists)

Примечание: arrs - это массив 2d, и каждый его элемент будет представлять столбец вашего text file.Здесь arrs[0] представляет first column текстового файла, arrs[1] представляет second column текстового файла и так далее.Это универсальное решение, и оно справится с любым текстовым файлом, каким бы ни было.столбцов у него есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...