如何在现有的 3d 数组上堆叠 2d 数组(python)

Posted

技术标签:

【中文标题】如何在现有的 3d 数组上堆叠 2d 数组(python)【英文标题】:How to stack 2d array on an existing 3d array (python) 【发布时间】:2022-01-20 16:30:53 【问题描述】:

我正在尝试在 a1 下方“堆叠”数组 a2,以便得到具有以下形状的数组 b

a1.shape => (2, 50, 241)
a2.shape => (50, 241)

# goal
b.shape => (3, 50, 241)

这是我的尝试,但 np.stack 需要相同的形状

b = np.stack([a1, a2])

【问题讨论】:

【参考方案1】:
import numpy as np
arr1 = np.random.rand(2, 50, 241)
arr2 = np.random.rand(50, 241)

重塑 arr2 使其具有相同的 3d 结构:

arr2 = arr2.reshape(1, 50, 241)

Vstack 它:

arr3 = np.vstack((arr1, arr2))

>>> arr3.shape
(3, 50, 241)

【讨论】:

【参考方案2】:

如果您的数组是 numpy 数组,请尝试 np.append

b = np.append(a1, [a2])

这是假设您尝试构建 b 使得 a2 是 b 的最后一项,a1 是前 2 项。

【讨论】:

【参考方案3】:

尝试使用:

a2_reshaped = a2.reshape((1,) + a2.shape)
b = np.stack([a1, a2_reshaped])

【讨论】:

以上是关于如何在现有的 3d 数组上堆叠 2d 数组(python)的主要内容,如果未能解决你的问题,请参考以下文章