В 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