我正在使用 3D numpy 数组,但在堆叠其中两个时遇到问题。这就是我正在尝试做的事情:
import numpy as np
grid = np.arange(16).reshape((1, 4, 4))
grid2 = grid[:, :-1, ::-1].copy()
我希望能够将
grid
和 grid2
与 np.concatenate
堆叠在 axis=0
上,如下所示:
np.concatenate((grid, grid2), axis=0)
但它不起作用,
np.vstack
或np.dstack
也不起作用(我观察到vstack
仅适用于1D和2D数组)。我检查了这些形状,我认为它们会对齐,因为它们都源自 grid
,但它不合作。
这是一个更简单的串联示例,它确实按预期工作:
x = np.arange(1, 9).reshape((2, 4))
y = np.arange(4)
np.vstack((x, y)) # Works perfectly
为什么堆叠
grid
和 grid2
会失败,而像 x
和 y
这样更简单的情况却可以正常工作?我在这里缺少 numpy 中的特定规则或限制吗?”
hstack
:
np.hstack([grid, grid2])
输出:
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[ 3, 2, 1, 0],
[ 7, 6, 5, 4],
[11, 10, 9, 8]]])