Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 定义一个事先不知道一维的矩阵_Python_Numpy_Scipy - Fatal编程技术网

Python 定义一个事先不知道一维的矩阵

Python 定义一个事先不知道一维的矩阵,python,numpy,scipy,Python,Numpy,Scipy,在一个程序中,我需要创建一个矩阵,它可以是形状,例如矩阵.shape(x,100)。形状的第一个维度事先无法知道,所以我在这里只使用X。在迭代中,程序将生成一维数组,如“Y.shape=(100,1)`。所以程序是这样工作的 matrix = [] index = 0 for i in range(XY): if something matrix[index,:] = Y index = index+1 我不确定是否可以用这种方式初始化矩阵,并且在分

在一个程序中,我需要创建一个
矩阵
,它可以是形状,例如
矩阵.shape(x,100)
。形状的第一个维度事先无法知道,所以我在这里只使用
X
。在迭代中,程序将生成一维数组,如“Y.shape=(100,1)`。所以程序是这样工作的

 matrix = []
 index = 0
 for i in range(XY):
    if something 
       matrix[index,:] = Y
       index = index+1

我不确定是否可以用这种方式初始化
矩阵
,并且在分配
矩阵时是否需要重塑
Y
{index,:]=Y
在上面所示的某些迭代中。

您不能创建维度未知的
numpy
数组。但是,尽管有名称,您的
矩阵
不是数组,而是python列表:

In [1]: alist = []
In [2]: for i in range(3):
   ...:     alist.append(np.arange(4)[:,None])
   ...:     
In [3]: alist
Out[3]: 
[array([[0],
        [1],
        [2],
        [3]]), array([[0],
        [1],
        [2],
        [3]]), array([[0],
        [1],
        [2],
        [3]])]
In [4]: np.concatenate(alist, axis=1)
Out[4]: 
array([[0, 0, 0],
       [1, 1, 1],
       [2, 2, 2],
       [3, 3, 3]])
您可以高效地将对象附加到列表中。填充后,该列表可以转换为数组。在这里,因为元素是(n,1),所以我选择连接以生成(4,3)数组。但是可以使用
np.array
np.stack
或其他轴

广泛推荐这种基本思想,即在列表中追加内容,并在迭代后通过一次调用生成数组


matrix[i,:]=Y
仅当
matrix
足够大时才起作用。它不会“增长”矩阵(与MATLAB和Javascript实践相反)。您可以迭代地将一个数组连接到另一个数组,但效率较低。

什么是
XY
?您可以用一个小数组提供一些工作代码吗?在哪里使用
i