堆叠两个 3D 阵列的简单方法

easy way to stack two 3D arrays

我有 2 个具有以下形状的数组:

array_1 (0,3,4)

和array_2 (0,1,4)

将它们堆叠或合并在一起的最简单方法是什么,这样我就有了一个数组?

您可以通过传播运算符执行此操作:

stacked = [*array_1, *array_2]
# result: [0, 3, 4, 0, 1, 4]

您可以尝试 np.hstack 给定维度 1 或 np.append

import numpy as np

array_1  = np.array([0,3,4])
array_2  = np.array([0,1,4])

np.hstack((array_1, array_2)) # array([0, 3, 4, 0, 1, 4])

np.append(array_1, array_2) # array([0, 3, 4, 0, 1, 4])

如果你想要一个形状为 (0,4,4) 的数组,你可以将数组追加到第二个轴上:

>>> a = np.zeros((0,3,4))
>>> b = np.zeros((0,1,4))
>>> np.append(a, b, axis=1)
array([], shape=(0, 4, 4), dtype=float64)

在您发表评论后,您希望第一个数组在一行中,第二个数组在另一行中。由于它们具有不同的形状,您将以参差不齐的嵌套序列结束。这目前已被弃用,但可以通过强制对象 dtype 获得:

>>> x = np.empty(2, dtype=object)
>>> x[0] = a
>>> x[1] = b

在您对这个问题发表评论后,您有:

a1 = np.zeros((2,3))
a2 = np.zeros((4,2))
a3 = np.zeros((1,4))

您只需要:

x = np.array((a1, a2, a3), object)