将 2 个 ndarrays 合并成一个,其第一个组件是两个初始 ndarrays

问题描述

我有两个 ndarrays,A 和 B。我想创建一个 ndarray,C,这样 C[0]=AC[1]=B

换句话说,如果A.shapeB.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]]])