有了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矩阵?
答案 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.]])