Python 将N个不同的向量排列成一个对象数组-而不是矩阵

Python 将N个不同的向量排列成一个对象数组-而不是矩阵,python,arrays,numpy,object,vector,Python,Arrays,Numpy,Object,Vector,在python和/或numpy中: 我有几个一维向量(数组),一次一个从文件中读取。它们并非都有相同数量的系数,即长度不同。我想将每个向量添加到向量列表中,并将它们作为对象进行处理,每次提取一个向量进行处理。我读过任何听起来像这个过程的问题/答案: 我还尝试了各种python/numpy函数,包括追加、连接、堆栈、使用递增索引追加到对象数组等。例如: filenames = pd.read_csv('filenames', header=None) numFiles = filenames.

在python和/或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

您可以尝试创建向量列表。 列表具有强大的功能
append()


希望你能有个主意

x0=[10]
不会把10项列得太长。它列出了一个单子,号码是10。是的,我知道了。我以为我是在用它作为构造函数。在python、numpy和pandas中,append的含义在不断变化,这让人感到困惑。这很管用。谢谢但是我仍然有兴趣知道,你怎么能用numpy数组而不是列表来编写相同的循环呢?Gerry,我没有这样的经验,但我想你可以从这篇文章中得到一些信息,它说:永远不要在循环中附加到numpy数组:与基本Python相比,这是numpy非常不擅长的一种操作。这是因为每次追加都要制作一份完整的数据副本,这将花费您二次时间。“谢谢,这是我的答案。太好了,您终于得到了答案。”
for obj in x0:
    # do something with vector
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