问题描述
我有两个 ndarrays
,A 和 B。我想创建一个 ndarray
,C,这样 C[0]=A
和 C[1]=B
。
换句话说,如果A.shape
和B.shape
都给出(a,b)
,我想创建一个ndarray
,C,它的形状是(2,a,b)
。>
有没有办法构造这个?对于形状为 ndarrays
的 N (a,b)
,是否有一种有效的方法可以使最终的 ndarray
具有形状 (N,b)
?
解决方法
您可以使用 numpy.stack
。
a = np.ones((3,4))
b = np.zeros((3,4))
c = np.stack((a,b),axis=0)
c.shape # (2,3,4)
数组 c
具有以下数据:
array([[[1.,1.,1.],[1.,1.]],[[0.,0.,0.],[0.,0.]]])
,
为了在不指定 axis
的情况下实现您想要的效果,您可以使用 dstack 以序列深度方式堆叠数组:
a = np.array([[1,2],[3,4]])
b = np.asarray([[5,6],[7,8]])
np.dstack((a,b))
array([[[1,5],[2,6]],[[3,7],[4,8]]])