如何使用np.array声明具有不同行长度的二维数组?

时间:2015-04-14 11:52:05

标签: python numpy

例如,我想要一个2行矩阵,第一行长度为1,第二行长度为2.我可以这样做,

list1 = np.array([1])    

list2 = np.array([2,3])    

matrix = []    

matrix.append(list1)    

matrix.append(list2)    

matrix = np.array(matrix)    

我想知道是否可以直接在程序开头声明这种形状的矩阵而不经过上述程序?

1 个答案:

答案 0 :(得分:2)

矩阵是by definition一个矩形数组。 NumPy不支持不具有矩形形状的数组。目前,您的代码生成的是一个数组,其中包含一个列表(matrix),其中包含两个以上的数组。

array([array([1]), array([2, 3])], dtype=object)

我真的不知道这个形状的目的是什么,并建议你只使用嵌套列表来处理你对这个形状所做的任何事情。如果您已经使用NumPy找到了这种结构的一些用途,那么您可以像下面这样以惯用方式生成它:

>>> np.array([list1,list2])   
array([array([1]), array([2, 3])], dtype=object)