一、一维数组在乘号后面时
A=[[1,2],[3,4]] *[5,6],v会被转换(视为)列向量
矩阵 A (2×2) 向量 v (2,)
┌───────────┐ ┌───┐
│ 1 2 │ │ 5 │
│ 3 4 │ │ 6 │
└───────────┘ └───┘
│ │
└────────┬─────────┘
│
▼
自动扩展为列向量 v (2×1)
┌───┐
│ 5 │
│ 6 │
└───┘
┌───────────┐
│ 1 2 │ × ┌───┐ = ┌───────────────┐
│ 3 4 │ │ 5 │ │ 1×5 + 2×6 = 17 │
└───────────┘ │ 6 │ │ 3×5 + 4×6 = 39 │
└───┘ └───────────────┘
二、一维数组在乘号前面时,v会转为行向量,如下图所示
向量 v (2,) 矩阵 A (2×2)
┌───┐ ┌───────────┐
│ 5 │ │ 1 2 │
│ 6 │ │ 3 4 │
└───┘ └───────────┘
│ │
└────────┬─────────┘
│
▼
自动扩展为行向量 v (1×2)
┌───────┐
│ 5 6 │
└───────┘
┌───────┐ ┌───────────┐ ┌───────────────────────┐
│ 5 6 │ × │ 1 2 │ = │ 5×1 + 6×3 5×2 + 6×4 │
└───────┘ │ 3 4 │ │ = 23 = 34 │
└───────────┘ └───────────────────────┘
三. 维度变化图解
1、当向量在后 (A @ v):
矩阵 A (m×n) 向量 v (n,)
□ □ □ ● 自动扩展
□ □ □ ● → ●
□ □ □ ● ●
m×n n n×1
↓ 点积运算 ↓
结果向量 (m,)
●
●
●
m
2、当向量在前 (v @ A):
向量 v (n,) 矩阵 A (n×p)
● ● ● □ □ □ 自动扩展
□ □ □ → ■■■■■ (1×n)
□ □ □
n×p
↓ 点积运算 ↓
结果向量 (p,)
■■■
p