使用 numpy 从多个 2D 数组构建 3D 数组

Alf*_*Alf 4 python arrays numpy

让我们从 2 个二维数组开始:

import numpy as np
a = np.zeros( (3,4) )
b = np.zeros( (3,4) )
Run Code Online (Sandbox Code Playgroud)

现在让我们将它们组合成一个 3D 数组:

c = np.stack( (a,b) )
Run Code Online (Sandbox Code Playgroud)

到目前为止一切都很好,但是如何向 3D 数组添加额外的 2D 数组,以下不起作用:

np.stack( (c,a) )
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是如何向 3D 数组添加一个附加层?(麻木版本1.12.1

小智 6

如果您一开始就知道所有 2D 数组,则可以堆叠两个以上的数组:

import numpy as np
a = np.zeros((3, 4))
b = np.zeros((3, 4))
c = np.stack((a, b, a))
Run Code Online (Sandbox Code Playgroud)

如果您已经有一个“堆叠”数组并想向其中添加另一个数组,则可以使用例如numpy.concatenate

如果要添加的数组是“平面”,则必须将其包装在列表中以使维度匹配。默认情况下,数组沿第一个维度连接(就像您axis=0在关键字参数中指定的一样):

>>> c.shape
(2, 3, 4)
>>> np.array([a]).shape
(1, 3, 4)

c = np.concatenate((c, [a]))
Run Code Online (Sandbox Code Playgroud)

如果两个数组都已经“堆叠”,这也将起作用:

c = np.concatenate((c, c))
Run Code Online (Sandbox Code Playgroud)