我有两个numpy 1d数组,例如:
a = np.array([1,2,3,4,5])
b = np.array([6,7,8,9,10])
Run Code Online (Sandbox Code Playgroud)
那我怎么能得到一个2d阵列[[1,6], [2,7], [3,8], [4,9], [5, 10]]?
zip*_*ipa 71
如果你有numpy数组,你可以使用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)
Run Code Online (Sandbox Code Playgroud)
Ébe*_*aac 23
答案在于你的问题:
np.array(list(zip(a,b)))
Run Code Online (Sandbox Code Playgroud)
编辑:
尽管我的帖子提供了OP请求的答案,但转换到列表并返回NumPy数组需要一些开销(对于大型数组而言是显而易见的).
因此,dstack这将是一个计算上有效的替代方案(参考@ zipa的答案).我dstack在发布这个答案的时候并没有意识到@zipa将这篇文章介绍给这篇文章.