16 内积、外积运算

0 阅读2分钟

数组内积(点积)

数组 内积,也称为点积,是将两个数组相乘得到一个标量结果(对于一维向量)或一个数组结果(对于二维数组)。在 numpy 中,可以使用 numpy.dot() 函数或 numpy.matmul() 函数进行数组内积运算。

场景使用

  • 推荐系统:用户偏好向量 × 商品特征向量 → 点积越大,推荐优先级越高;
  • 文本相似度:词频向量的点积 → 点积越大,文本内容越相似;
  • 图片相似度:图像特征向量的点积 →点积越大,图片越相似

image.png

image.png

# 两个二维数组
a = np.array([[1, 2]])
b = np.array([[5, 6], [7, 8]])

# 使用 numpy.dot() 计算数组内积
res = np.dot(a, b)
print(res)

二维数组,np.dot(a, b) 执行标准的数组乘法,即 a 的行与 b 的列相乘并求和得到结果数组的元素

数组外积

数组外积是将两个向量相乘得到一个数组结果。在 numpy 中,可以使用 numpy.outer() 函数进行数组外积运算。

场景使用

  • 推荐系统:用户特征向量 × 商品特征向量 → 外积生成交叉特征数组,捕捉用户 - 商品的个性化关联;
  • 图像处理:低维卷积核通过外积扩展为高维卷积核,适配多通道图像。

image.png

image.png

import numpy as np
# 两个二维数组
a = np.array([[1, 2]])
b = np.array([[5, 6], [7, 8]])
# 使用 numpy.outer() 计算数组外积
result = np.outer(a, b)
print("\n使用 numpy.dot() 计算的数组外积:")
print(result)

总结

NumPy 中点积 vs 外积 核心对比

维度点积(np.dot/ @)外积(np.outer/np.kron)
API 核心收缩维度的聚合运算扩展维度的枚举运算
形状规则第一个最后一维 = 第二个倒数第二维无维度要求,结果形状 = 原两数组形状拼接
一维结果标量(0 维)二维数组(2 维)
二维结果数组(行数 = 第一个行数,列数 = 第二个列数)分块数组(行数 = 第一个行数 × 第二个行数,列数 = 第一个列数 × 第二个列数)
计算逻辑对应维度相乘求和所有元素两两相乘
典型场景线性模型、相似度计算、数组乘法特征交叉、网格生成、核函数构建