如何创建与1x2 linspace数组等效的numpy

时间:2019-04-30 23:40:37

标签: python-3.x numpy

起初,我需要一个像这样的数组: [0. , 0.25, 0.5 , 0.75, 1. ],即np.linspace(0,1,5)。但是现在我需要一个像这样的数组:

[[0.  ,  0.],
 [0.25,  0.5],
 [0.5 ,  1.],
 [0.75,  1.5],
 [1.  ,  2]]

请注意,array[1][0] != array[1][1]

不能真正解释如何,但是应该像这样:

array[:][0] = np.linspace(0,1,5)
array[:][1] = np.linspace(0,2,5)

array[0][0] is np.linspace(0,1,5)[0]array[1][0] is np.linspace(0,1,5)[1]

我希望您能理解我要在这里构建的数组。 预先感谢!

4 个答案:

答案 0 :(得分:1)

请注意,您的第一列是np.linspace(0,1,5),第二列是np.linspace(0,2,5),因此您可以使用这两个组件创建该数组,首先从这两个组成一个数组形状为2x5,而不是在转置数组时变成5x2数组:

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

答案 1 :(得分:0)

这是一种方法:

In [33]: start = np.array([0, 0])                                                                                     

In [34]: stop = np.array([1, 2])                                                                                      

In [35]: n = 5                                                                                                        

In [36]: np.linspace(0, 1, n).reshape(-1, 1)*(stop - start) + start                                                      
Out[36]: 
array([[0.  , 0.  ],
       [0.25, 0.5 ],
       [0.5 , 1.  ],
       [0.75, 1.5 ],
       [1.  , 2.  ]])

答案 2 :(得分:0)

np.c_是为此的numpy函数

np.c_[np.linspace(0,1,5),np.linspace(0,2,5)]

输出:

       [0.25, 0.5 ],
       [0.5 , 1.  ],
       [0.75, 1.5 ],
       [1.  , 2.  ]])

答案 3 :(得分:0)

第二个数组只是第一个数组的两倍。因此,您还可以考虑以下内容

a = np.linspace(0,1,5)
b = 2*a

np.column_stack((a, b))

# array([[0.  , 0.  ],
#        [0.25, 0.5 ],
#        [0.5 , 1.  ],
#        [0.75, 1.5 ],
#        [1.  , 2.  ]])

或者,您可以选择

np.vstack((a,b)).T

OR

np.concatenate((a.reshape(5,1), b.reshape(5,1)), axis=1)