如何在现有的 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 数组为 python pcolormesh 设置动画,其中第三轴是时间步长?
如何在 python 中用两个 2D 数组初始化一个 3D 数组?
如何通过在 MATLAB 中模板化 2D 数组的列来创建 3D 数组?