本文介绍一种简洁、可读性强的方法,利用 `np.dstack` 与 `reshape` 将四个等长一维数组(代表随时间变化的 2×2 矩阵元素)直接组合成形状为 `(n, 2, 2)` 的三维数组,避免多层 `concatenate` 和冗余 reshape。
在时间序列建模、状态空间表示或批量矩阵运算中,我们常需将多个标量时间序列(如矩阵的各个元素)组织为“时间 × 行 × 列”的三维结构。例如,给定四组长度为 N 的一维数组 A, B, C, D,分别对应每个时刻的 2×2 矩阵 [[A[t], B[t]], [C[t], D[t]]],目标是构造一个形状为 (N, 2, 2) 的三维 NumPy 数组。
传统方法(如问题中所示)通过多次 reshape 和 concatenate 实现,逻辑嵌套深、可读性差,且易出错。更优雅的解法是:先沿深度轴堆叠为 (1, N, 4),再重排为 (N, 2, 2)。
核心代码仅需一行:
import numpy as np N = 100 A = np.ones(N) * 1 B = np.ones(N) * 2 C = np.ones(N) * 3 D = np.ones(N) * 4 # ✅ 推荐:简洁、直观、高效 ABCD = np.dstack([A, B, C, D]).reshape(N, 2, 2)
其中: