本文介绍一种简洁、可读性强的方法,利用 `np.dstack` 与 `reshape` 组合,将四个等长一维时间序列快速堆叠为形状为 `(n, 2, 2)` 的三维数组,每个切片对应一个随时间变化的 2×2 矩阵。
在科学计算与信号处理中,常需将多个同步采样的标量时间序列(如状态变量 A、B、C、D)组织为“时变矩阵”结构——即对每个时间步 t,构造一个 2×2 矩阵 [[A[t], B[t]], [C[t], D[t]]],最终得到形状为 (N, 2, 2) 的三维数组。传统方法(如多次 reshape + concatenate)逻辑嵌套深、可读性差,且易出错。
更优雅的解决方案是借助 np.dstack ——它沿第三轴(axis=2) 堆叠数组,将输入的 (N,) 向量自动广播为 (1, N, 1) 形状后拼接,生成中间数组 (1, N, 4);再通过一次 reshape(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)
print(ABCD.shape) # (100, 2, 2)
print(ABCD[0]) # [[1. 2.]
# [3. 4.]]
⚠️ 注意事项: