добавление пустого массива, но организация добавленной информации в двух измерениях - PullRequest
0 голосов
/ 25 октября 2018

Такое ощущение, что это должно быть очень просто, но я борюсь.

У меня есть код, который просто читает текстовый файл.Текстовый файл раздражающе сложен, но в основном он имеет три угла поворота и выглядит примерно так:

HeaderInformation

datalocation    sometext     1    3.45   15.5    -120
datalocation2    sometext2     1    5.4   125    -140

Так что в настоящее время у меня есть код:

data = textfile.readlines
variable = 'datalocation'
Rotations = np.array([])
for line in data:
    if variable in line:
        linesplit = line.split()
        AngleRot = linesplit[3]
        AngleTilt = linesplit[4]
        AnglePsi = linesplit[5]
        Rotations = np.append(Rotations, ([AngleRot], [AngleTilt], [AnglePsi]))

print RelionRotations

Это работает, но всеуглы просто добавляются в массив numy один за другим.

Мне нужно использовать эти углы позже для вычислений, но я хочу, чтобы они разбивались так, чтобы я мог уловить повороты каждой строки в текстовом файле.т.е. я хочу, чтобы они были проиндексированы как 3 значения на строку в двумерном массиве.

Кажется, это должно быть легко, но я изо всех сил пытаюсь понять, как это сделать.

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

С собственным читателем CSV от Numpy

In [29]: txt = '''HeaderInformation
    ...: 
    ...: datalocation    sometext     1    3.45   15.5    -120
    ...: datalocation2    sometext2     1    5.4   125    -140'''

In [32]: data = np.genfromtxt(txt.splitlines(),skip_header=2)
In [33]: data
Out[33]: 
array([[    nan,     nan,    1.  ,    3.45,   15.5 , -120.  ],
       [    nan,     nan,    1.  ,    5.4 ,  125.  , -140.  ]])

Или пропуская 2 текстовых столбца:

In [34]: data = np.genfromtxt(txt.splitlines(),skip_header=2,usecols=[2,3,4,5])
In [35]: data
Out[35]: 
array([[   1.  ,    3.45,   15.5 , -120.  ],
       [   1.  ,    5.4 ,  125.  , -140.  ]])
0 голосов
/ 25 октября 2018

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

import pandas as pd
# skiprow: skip your header information
df = pd.read_csv('test.csv', delimiter=r"\s+", skiprows=range(1, 2), header=None)
your_array = df[[2,3,4,5]].values # your numpy array
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...