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

如何利用Numpy向量化实现指定公式的矩阵D计算?

利用NumPy广播机制实现向量化计算

嘿,这个问题其实用NumPy的广播机制就能完美解决,全程不需要写任何循环,直接按公式写就行——NumPy会自动帮你处理不同形状数组的维度适配,效率拉满!

核心思路:依赖NumPy广播规则

NumPy的广播会自动扩展形状不匹配但兼容的数组,让它们能进行逐元素运算。咱们先明确各个变量的形状:

  • A:(10,) → 可以沿第二维度(列)扩展为(10,20)
  • B:(20,) → 可以沿第一维度(行)扩展为(10,20)
  • C:(10,20) → 本身就是目标形状,无需扩展

公式里的每一步运算,NumPy都会自动完成维度扩展,完全不用手动reshape或者循环。

完整向量化代码实现

直接把公式翻译成代码就行,全程都是向量化操作:

import numpy as np

# 初始化变量
A = np.ones((10,))
B = np.ones((20,))
C = np.ones((10,20))

# 直接按公式计算,NumPy自动处理广播
D = (np.log(B / A) + (C ** 2) * B) / (C * np.sqrt(B))

# 验证结果形状是否符合要求
print(D.shape)  # 输出:(10, 20)

逐部分拆解验证(可选)

如果想确认每一步的形状是否正确,可以单独打印各部分的形状:

  • B / A:结果形状是(10,20)(广播后A和B都适配成这个形状)
  • C ** 2:结果形状是(10,20)(和C一致)
  • (C ** 2) * B:结果形状(10,20)(B广播适配)
  • np.sqrt(B):结果形状(20,)
  • C * np.sqrt(B):结果形状(10,20)(sqrt(B)广播适配)
    所有中间结果的形状最终都能匹配,所以直接运算完全没问题。

内容的提问来源于stack exchange,提问作者Dhruv Mahajan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:17:16