Как закрепить два массива 1d numpy до массива 2d numpy

У меня есть два массива numpy 1d, например:

a = np.array([1,2,3,4,5])
b = np.array([6,7,8,9,10])

Тогда как я могу получить один 2d-массив [[1,6], [2,7], [3,8], [4,9], [5, 10]]?

Ответы

Ответ 1

Ответ лежит в вашем вопросе:

np.array(list(zip(a,b)))


Редактировать:

Хотя мой пост дает ответ в соответствии с запросом OP, преобразование в список и обратно в массив NumPy требует некоторых затрат (это заметно для больших массивов).

Следовательно, dstack будет эффективной в вычислительном отношении альтернативой (см. Ответ @zipa). На момент публикации этого ответа я не знал о dstack поэтому благодарю @zipa за то, что он представил его в этом посте.

Ответ 2

Если у вас есть пустые массивы, вы можете использовать dstack():

import numpy as np

a = np.array([1,2,3,4,5])
b = np.array([6,7,8,9,10])

c = np.dstack((a,b))
#or
d = np.column_stack((a,b))

>>> c
array([[[ 1,  6],
        [ 2,  7],
        [ 3,  8],
        [ 4,  9],
        [ 5, 10]]])
>>> d
array([[ 1,  6],
       [ 2,  7],
       [ 3,  8],
       [ 4,  9],
       [ 5, 10]])

>>> c.shape
(1, 5, 2)
>>> d.shape
(5, 2)

Ответ 3

Вы можете использовать zip

np.array(list(zip(a,b)))
array([[ 1,  6],
   [ 2,  7],
   [ 3,  8],
   [ 4,  9],
   [ 5, 10]])