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

NumPy中1d数组与2d数组相乘得到指定结果的计算逻辑

NumPy 二维数组与一维数组乘法的运算逻辑

你得到的一维输出是NumPy广播机制与向量点积规则共同作用的结果,具体规则和计算过程如下:

核心运算规则

  • 先明确两个数组的基础属性:
    • 二维数组w形状为(5,5),即5行5列结构
    • 一维数组c形状为(5,),长度为5
  • 如果直接用*做逐元素乘法,NumPy会自动触发广播机制:从数组最右侧维度开始对齐校验,两个数组最右侧维度长度均为5,满足广播兼容要求,会自动把一维数组c扩展为(5,5)形状的二维数组——扩展后的数组每一行都和原c完全一致,再和w对应位置的元素做逐元素相乘,得到5×5的中间结果。
  • 你最终拿到长度为5的一维数组,说明你在逐元素相乘后沿列方向(axis=0)做了求和聚合,或者直接使用了矩阵乘法c @ w(行向量乘矩阵):此时每个输出元素对应c和w的某一列的点积,也就是两个数组同位置元素相乘后求和。

具体计算逻辑

输出数组的第n个元素,对应w的第n列和c的点积:

  • 第一个输出元素对应w第一列[50,55,60,65,70]与c计算:50*c[0] + 55*c[1] + 60*c[2] + 65*c[3] +70*c[4]
  • 第二个输出元素对应w第二列[51,56,61,66,71]与c计算:51*c[0] + 56*c[1] + 61*c[2] + 66*c[3] +71*c[4]
  • 后续元素以此类推。由于w每一列的元素都比前一列同位置的元素大1,因此输出结果是公差为c所有元素之和的等差数列,和你给出的结果递增规律完全吻合。

注:你贴出的c值计算出的理论结果和实际输出存在小幅偏差,大概率是贴出的c做了四舍五入近似,和代码运行时的实际值有精度差异。

易混淆点提醒

不要把该运算和w @ c(矩阵乘列向量)混淆:w @ c是沿行方向求和,每个输出对应w的一行和c的点积,虽然最终也是长度为5的一维数组,但数值结果完全不同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 18:57:49