如何在现有的 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)的主要内容,如果未能解决你的问题,请参考以下文章

3d Numpy 数组到 2d

如何使用现有的 3D 数组为 python pcolormesh 设置动画,其中第三轴是时间步长?

如何在 python 中用两个 2D 数组初始化一个 3D 数组?

如何通过在 MATLAB 中模板化 2D 数组的列来创建 3D 数组?

Unity 3D:在现有的Android游戏场景中显示AdMob的横幅

在现有的 texture_2D 中裁剪四边形