准备NumPy计算数据时。我很想知道如何构建:
myarray.shape => (2,18,18)
来自:
d1.shape => (18,18)
d2.shape => (18,18)
我尝试使用NumPy命令:
hstack([[d1],[d2]])
但它看起来不起作用!
答案 0 :(得分:26)
只是做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)
答案 1 :(得分:7)
hstack和vstack不会改变数组的维数:它们只是将它们“并排”。因此,组合二维数组会创建一个新的二维数组(而不是3D数组!)。
你可以做丹尼尔建议的(直接使用numpy.array([d1, d2])
)。
您也可以在堆叠数组之前将数组转换为3D数组,方法是为每个数组添加一个新维度:
d3 = numpy.vstack([ d1[newaxis,...], d2[newaxis,...] ]) # shape = (2, 18, 18)
实际上,d1[newaxis,...].shape == (1, 18, 18)
,您可以直接堆叠两个3D数组并获得所需的新3D数组(d3
)。
答案 2 :(得分:0)
arr3=np.dstack([arr1, arr2])
arr1,arr2是2d数组shape (256,256)
,arr3:shape(256,256,2)
答案 3 :(得分:0)
result = [[[a[0], b[1]] for a, b in zip(x, [*x[1:], x[0]])] for x in total_path]
函数提供了很多功能。你可以说:
np.stack()
然而,您也可以指定轴,数组沿该轴连接。因此,如果您想加入 RGB 图像的通道,您可以说:
>>> d3 = np.stack([d1, d2])
>>> d3.shape
(2, 18, 18)