【发布时间】:2014-09-26 19:17:22
【问题描述】:
我很难理解 numpy 的 dstack 函数实际上在做什么。文档相当稀疏,只是说:
按顺序深度(沿第三轴)堆叠数组。
获取一系列数组并沿第三轴堆叠它们 制作一个数组。重建除以
dsplit的数组。 这是一种将二维数组(图像)堆叠成单个的简单方法 用于处理的 3D 数组。
所以要么我真的很愚蠢,而且这句话的意思很明显,要么我似乎对“堆叠”、“按顺序”、“深度明智”或“沿轴”等术语有一些误解。但是,我的印象是,我在 vstack 和 hstack 的上下文中理解这些术语就好了。
我们来看这个例子:
In [193]: a
Out[193]:
array([[0, 3],
[1, 4],
[2, 5]])
In [194]: b
Out[194]:
array([[ 6, 9],
[ 7, 10],
[ 8, 11]])
In [195]: dstack([a,b])
Out[195]:
array([[[ 0, 6],
[ 3, 9]],
[[ 1, 7],
[ 4, 10]],
[[ 2, 8],
[ 5, 11]]])
首先,a 和 b 没有第三轴,那么我如何将它们沿“第三轴”堆叠?其次,假设 a 和 b 是 2D 图像的表示,为什么我会在结果中得到 三个 2D 数组,而不是“按顺序”排列两个 2D 数组?
【问题讨论】:
-
就像带有一维数组的 vstack 沿着垂直于该一维轴的新轴堆叠它们一样,带有二维数组的 dstack 沿着垂直于两个二维轴的新轴堆叠它们。就像把一堆纸叠在一起一样。
-
@abarnert 但是,当我试图将两张纸叠在一起时,为什么我最终会得到三张纸?
-
您会在结果中看到 3 个二维数组,因为您正在查看第一个轴,而不是第三个轴。
标签: python numpy concatenation multidimensional-array