为什么我不能在 numpy 中使用 np.concatenate 堆叠 3D 数组,而 1D 和 2D 数组可以工作?

问题描述 投票:0回答:1

我正在使用 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 中的特定规则或限制吗?”

python arrays numpy multidimensional-array concatenation
1个回答
0
投票

在这种特殊情况下,您可以使用

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]]])
© www.soinside.com 2019 - 2024. All rights reserved.