使用linspace和1创建Numpy矩阵

时间:2015-03-07 14:10:10

标签: python numpy

有了Numpy,我想我可以用这种方式创建一个矩阵

 z = np.array( [np.linspace(0, 1, 2), np.ones((1, 2)), np.ones((1, 2))] )
然而,

给了我:

array([array([ 0.,  1.]), array([[ 1.,  1.]]), array([[ 1.,  1.]])], dtype=object)

然后检查它的形状:

>>> z.shape
(3,)

列维度不存在。 所以我想我有一个包含三个数组对象的数组。

如何在这里使用linespace()和ones()来获得3 x 2矩阵?

1 个答案:

答案 0 :(得分:4)

如果输入是1维的,您可以使用numpy.array

np.array([np.linspace(0, 1, 2), np.ones((2,)), np.ones((2,))])

产量

array([[ 0.,  1.],
       [ 1.,  1.],
       [ 1.,  1.]])

请注意,np.ones((1,2))具有二维形状(1,2),而np.linspace(0, 1, 2)具有一维形状(2,)。要使用np.array创建所需的结果,数组需要具有兼容的形状 - 在这种情况下,这意味着使用1维数组np.ones(2,)而不是np.ones((1,2))


如果您必须使用np.ones((1,2)),那么您也可以改为np.linspace(0, 1, 2)二维,然后使用numpy.vstack

np.vstack([np.linspace(0, 1, 2)[np.newaxis, :], np.ones((1,2,)), np.ones((1,2,))])

产量

array([[ 0.,  1.],
       [ 1.,  1.],
       [ 1.,  1.]])