You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于向量扩展矩阵:寻求NumPy实现矩阵A转矩阵B的更优方法

更高效的NumPy矩阵转换实现

当然有更简洁高效的实现方式。原代码里的np.insert和多次转置、重塑操作在处理大规模矩阵时效率偏低,我们可以利用NumPy的拼接函数和广播机制来优化,代码更直观且性能更好:

import numpy as np

a = np.array([[0.02, 0.05, 0.05],
              [0.35, 0.10, 0.45],
              [0.08, 0.25, 0.15]])

w = np.array([0.75, 0.25])

# 垂直拼接原矩阵与最后一行,得到4×3的中间矩阵
temp_B = np.vstack([a, a[2:3, :]])
# 水平拼接中间矩阵与它的第三列(索引为2),得到4×4矩阵
temp_B = np.hstack([temp_B, temp_B[:, 2:3]])
# 利用广播对最后两行逐行乘以w的对应元素
temp_B[2:] *= w.reshape(-1, 1)

B = temp_B

优化点说明:

  • 替换np.insert为拼接函数:np.vstack和np.hstack直接基于数组维度进行拼接,避免了np.insert需要移动大量元素的额外开销,在矩阵规模较大时性能提升显著;
  • 消除冗余的转置与重塑:原代码中两次转置+insert+reshape的复杂操作,可直接通过水平拼接一步完成,逻辑更清晰;
  • 用广播简化乘法操作:将w重塑为列向量后,NumPy会自动广播维度,无需手动转置子矩阵,代码更简洁且执行效率更高。

运行这段代码得到的B矩阵与原代码完全一致,但执行效率更高,可读性也更强。

内容的提问来源于stack exchange,提问作者Stücke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 15:05:15