【发布时间】:2023-03-31 20:57:01
【问题描述】:
x和y这两个数组的形状是(a,b)。如何获得形状(a,b,2) 的组合数组?
我目前的解决方案是
z = np.zeros((a,b,2))
z[:,:,0] = x
z[:,:,1] = y
是否可以在不创建新数组的情况下实现这一点?
【问题讨论】:
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 秒。