我有2个numpy 1d数组,例如,如何将两个1d numpy数组拉到2d numpy数组中
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]
我有2个numpy 1d数组,例如,如何将两个1d numpy数组拉到2d numpy数组中
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]
的答案就在你的问题:
np.array(list(zip(a,b)))
编辑:
虽然我的POS t根据OP的要求给出答案,转换到列表并返回到NumPy数组需要一些开销。
因此,dstack
将是一个计算有效的替代方案(参考@ zipa的答案)。在发布这个答案时,我并不知道dstack
,所以在@zipa中介绍这篇文章的时候感谢。
为什么在使用Numpy数组的时候使用普通的Python函数来做到这一点? –
@ PM2Ring你说得对。我不知道zipa的答案,但是第一个发布。 –
您可以使用zip
np.array(list(zip(a,b)))
array([[ 1, 6],
[ 2, 7],
[ 3, 8],
[ 4, 9],
[ 5, 10]])
如果你有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
c = np.column_stack((a,b))
或者,'np.stack((a,b),axis = -1)',但你的方式更紧凑。 –
FWIW,'np.column_stack'似乎是最快的方法,请参阅我对问题的评论以获取详细信息。 –
只需要注意 - 'np.dstack'在第三维堆栈数组。因此你会创建一个不必要的维度。 'np.column_stack'或'np.stack(...,axis = -1)'更合适。 –
对于非常小的数组,'zip'可以比调用numpy的功能,速度更快,但对于更长数组的Numpy函数更快_much_,'column_stack'是我测试中速度最快的。例如,对于长度为1000的数组,“column_stack”大约比“zip”快1000倍。 [这是一些相关的timeit代码](https://gist.github.com/PM2Ring/a4d0540f960a80fde91fa808eaa88700)。 –