Как закрепить два массива 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]])