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

如何在NumPy中实现矩阵与向量的逐行对应元素相除?

高效实现numpy矩阵每行除以对应向量元素

要实现n×n矩阵p的每一行p[i,:]除以n×1向量q的对应元素q[i],无需低效的Python循环,利用numpy的广播机制就能高效完成,以下是几种常用方法:

  • 调整向量维度后直接除法
    把向量q转换为列向量形状(n×1),numpy会自动通过广播匹配矩阵p的维度,实现每行元素除以对应标量:

    import numpy as np
    
    # 示例数据
    n = 3
    p = np.array([[1,2,3], [4,5,6], [7,8,9]])
    q = np.array([2, 3, 4])  # 一维向量,或已为n×1的列向量
    
    # 方法1:用reshape转换维度
    result = p / q.reshape(-1, 1)
    
    # 方法2:用[:, np.newaxis]新增维度
    result = p / q[:, np.newaxis]
    
    # 若q已是n×1列向量,直接除法即可
    q_col = np.array([[2], [3], [4]])
    result = p / q_col
    
  • 使用np.expand_dims扩展维度
    和上面的方法原理一致,用np.expand_dims明确为q添加第二个维度:

    result = np.divide(p, np.expand_dims(q, axis=1))
    
  • 转置后除法再转置(可选)
    另一种思路是先转置矩阵,让列对应原矩阵的行,除以q后再转置回来,效果相同:

    result = (p.T / q).T
    

原理说明

numpy的广播规则会自动将低维度数组扩展为匹配高维度数组的形状:当q是n×1的列向量时,它会被扩展为n×n的矩阵(每行都是q[i]的重复),此时和p逐元素相除,就等价于p的每一行除以q[i]。这些操作都是numpy内部的C级实现,效率远高于Python循环,适合大n的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 10:52:26