Numpy 如何实现';内部';拉链?

Numpy 如何实现';内部';拉链?,numpy,reshape,Numpy,Reshape,两个数组x和y的形状是(a,b)。如何获得形状的组合数组(a、b、2) 我目前的解决办法是 z = np.zeros((a,b,2)) z[:,:,0] = x z[:,:,1] = y 在不创建新阵列的情况下是否可以实现此目的?您可以使用np.dstack: In [2]: import numpy as np In [3]: a = np.random.normal(size=(4,6)) In [4]: b = np.random.normal(size=(4,6)) In [5]:

两个数组
x
y
的形状是
(a,b)
。如何获得形状的组合数组
(a、b、2)

我目前的解决办法是

z = np.zeros((a,b,2))
z[:,:,0] = x
z[:,:,1] = y

在不创建新阵列的情况下是否可以实现此目的?

您可以使用
np.dstack

In [2]: import numpy as np
In [3]: a = np.random.normal(size=(4,6))
In [4]: b = np.random.normal(size=(4,6))

In [5]: np.dstack((a,b)).shape
Out[5]: (4, 6, 2)
还有一个比较:

In [10]: d = np.dstack((a,b))  
In [11]: c = np.zeros((4,6,2))
In [12]: c[:,:,0] = a
In [13]: c[:,:,1] = b

In [14]: np.allclose(c,d)
Out[14]: True

这仍然“创建了一个新的数组”,但我认为这是不可能避免的,除非
x
y
从一开始是连续的。在我的例子中
dstack
方法实际上有点慢。1.42秒对1.29秒。