数组内积(点积)
数组 内积,也称为点积,是将两个数组相乘得到一个标量结果(对于一维向量)或一个数组结果(对于二维数组)。在 numpy 中,可以使用 numpy.dot() 函数或 numpy.matmul() 函数进行数组内积运算。
场景使用
- 推荐系统:用户偏好向量 × 商品特征向量 → 点积越大,推荐优先级越高;
- 文本相似度:词频向量的点积 → 点积越大,文本内容越相似;
- 图片相似度:图像特征向量的点积 →点积越大,图片越相似
# 两个二维数组
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() 函数进行数组外积运算。
场景使用
- 推荐系统:用户特征向量 × 商品特征向量 → 外积生成交叉特征数组,捕捉用户 - 商品的个性化关联;
- 图像处理:低维卷积核通过外积扩展为高维卷积核,适配多通道图像。
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 维) |
| 二维结果 | 数组(行数 = 第一个行数,列数 = 第二个列数) | 分块数组(行数 = 第一个行数 × 第二个行数,列数 = 第一个列数 × 第二个列数) |
| 计算逻辑 | 对应维度相乘求和 | 所有元素两两相乘 |
| 典型场景 | 线性模型、相似度计算、数组乘法 | 特征交叉、网格生成、核函数构建 |