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

如何将多个NumPy样本与单个样本相乘并沿轴1行向求和?

NumPy样本相乘后沿轴求和实现方案

通用场景实现

针对N个D维样本(形状(N, D))与单个D维样本(形状(1, D))相乘后沿轴1求和的需求,有两种高效实现方式:

  • 方法1:广播相乘 + 轴求和
    利用NumPy的广播机制完成逐元素相乘,再沿特征轴(轴1)求和,通过keepdims=True维持结果的二维形状:

    import numpy as np
    
    # X为N个样本数组,y为单个样本数组
    result = (X * y).sum(axis=1, keepdims=True)
    
  • 方法2:矩阵点积
    该操作本质等价于矩阵点积:将单个样本转置为(D, 1)形状后,与N个样本数组做点积,直接得到(N, 1)的结果:

    result = X @ y.T
    

具体场景示例

针对形状为(10, 5)的样本数组与(1, 5)的单个样本,具体实现代码如下:

import numpy as np

# 创建示例数据
X = np.random.rand(10, 5)  # 10个样本,每个含5个特征
y = np.random.rand(1, 5)   # 单个5维样本

# 方法1执行
result1 = (X * y).sum(axis=1, keepdims=True)
print(result1.shape)  # 输出:(10, 1)

# 方法2执行
result2 = X @ y.T
print(result2.shape)  # 输出:(10, 1)

# 验证两种方法结果一致性
print(np.allclose(result1, result2))  # 输出:True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:52:37