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

问题描述 投票:1回答:4

起初我需要一个像这样的数组:[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]

我希望你能理解我在这里要构建的数组。提前致谢!

python-3.x numpy
4个回答
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.  ]])

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

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.  ]])

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

要么

np.concatenate((a.reshape(5,1), b.reshape(5,1)), axis=1)
© www.soinside.com 2019 - 2024. All rights reserved.