Как создать NUMPY эквивалент для массива linspace 1x2 - PullRequest
1 голос
/ 01 мая 2019

Сначала мне понадобился такой массив: [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 ]

1 голос
/ 01 мая 2019

обратите внимание, что ваш первый столбец - 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 голосов
/ 01 мая 2019

Ваш второй массив всего в два раза больше вашего первого массива. Таким образом, вы также можете рассмотреть следующее

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)
0 голосов
/ 01 мая 2019

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.  ]])
0 голосов
/ 01 мая 2019

Вот один из способов:

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.  ]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...