在准备NumPy计算数据时,我想知道构建的方法:
myarray.shape => (2,18,18)
来自:
d1.shape => (18,18)
d2.shape => (18,18)
我尝试使用NumPy命令:
hstack([[d1],[d2]])
但它似乎不起作用!
对我来说,只需要执行d3 = array([d1,d2])
就可以了:
>>> from numpy import array
>>> # ... create d1 and d2 ...
>>> d1.shape
(18,18)
>>> d2.shape
(18,18)
>>> d3 = array([d1, d2])
>>> d3.shape
(2, 18, 18)
你可以按照Daniel建议的方法直接使用numpy.array([d1, d2])
。
或者在堆叠它们之前将数组转换为三维数组,方法是添加每个数组的新维度:
d3 = numpy.vstack([ d1[newaxis,...], d2[newaxis,...] ]) # shape = (2, 18, 18)
事实上,d1[newaxis,...].shape == (1, 18, 18)
,您可以直接堆叠这两个三维数组,得到您想要的新三维数组(d3
)。np.vstack([a[np.newaxis,...],b[np.newaxis,...]])
像魔法一样好用!谢谢。 - thepunitsingharr3=np.dstack([arr1, arr2])
arr1,arr2是2D数组,形状为(256,256)
,arr3形状为(256,256,2)
(height,width,3)
。 - decadenzanp.stack()
函数提供了很多的灵活性。你可以这样说:
>>> d3 = np.stack([d1, d2])
>>> d3.shape
(2, 18, 18)
然而,你也可以指定轴,沿着这个轴将数组连接起来。因此,如果您想要连接RGB图像的通道,则可以这样说:
>>> d3 = np.stack([d1, d2], axis=-1)
>>> d3.shape
(18, 18, 2)
vstack(d3, d4[np.newaxis,...])
。 - Eric O. Lebigot