упорядочить N различных векторов в массив объектов - не матрицу - PullRequest
0 голосов
/ 01 июля 2019

В Python и / или NumPy: У меня есть несколько одномерных векторов (массивов), которые я читаю из файлов по одному. Они не все имеют одинаковое количество коэффициентов, то есть не одинаковую длину. Я хотел бы добавить каждый вектор в список векторов и адресовать их как объекты, высасывая их обратно по одному для обработки. Я прочитал любые вопросы / ответы, которые звучат как этот процесс: Как построить матрицу по одному столбцу за раз

Векторизованный способ упорядочить вектор в матрице (numpy)

и я пробовал различные функции python / numpy, включая добавление, объединение, стек, добавление к массиву объектов с использованием возрастающего индекса и т. Д. Например:

filenames = pd.read_csv('filenames', header=None)
numFiles = filenames.shape[0]

# read in all files
firstTime = True
x0 = [numFiles]
y0 = [numFiles]
for i in range(numFiles):

    fn = filenames.iloc[i, 0]
    df = pd.read_csv(fn, delimiter='\t', header=None)

    # select first two columns in data frame
    nparr = np.array(df)[:,0:2]

    # this one line does a loop, discarding entries with zero flux
    # THIS IS THE PLACE where all vectors wind up with a different length
    nparr = nparr[nparr[:,1] != 0]

    x0[i] = nparr[:,0]
    y0[i] = nparr[:,1]

# by this point, object array is complete

Любой синтаксис, который я пытаюсь либо вызвать ошибку, в данном случае:

Traceback (most recent call last):
  File "InterpolateToSameDMValues-26-Jun-2019.py", line 48, in <module>
    x0[i] = nparr[:,0]
IndexError: list assignment index out of range

или иначе numpy просто складывает все мои векторы в один очень длинный вектор.

Как я могу сказать python не делать ничего фантастического, а просто создать массив объектов, через которые я могу перебирать?

for obj in x0:
    # do something with vector

1 Ответ

0 голосов
/ 01 июля 2019

Вы можете попытаться создать список векторов. Список имеет отличную функцию append():

import numpy as np
my_list = []
#you can append your list like this
sample_vector = np.array([1, 2, 3])
sample_vector2 = np.array([3, 2, 1])
my_list.append(sample_vector)
my_list.append(sample_vector2)
#working with your stored vectors
for vector in my_list:
    print(vector)
    #or do what you want

Надеюсь, вы получите идею

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