一、核心定义
数学中的矩阵(Matrix)
- 本质:一个二维的数学对象,由行和列组成,用于表示线性变换或方程组。
- 特征:严格二维结构,支持矩阵乘法、行列式等数学运算。
- 示例:[[1, 2], [3, 4]] 是一个2×2矩阵。
编程中的数组(Array)
- 本质:计算机内存中的连续数据存储单元集合,可具有任意维度(一维、二维、三维等)。
- 特征:更通用的数据容器,支持各种形状和元素类型(如整数、浮点数)。
- 示例:
np.array([1, 2, 3])
是一维数组;np.array([[1, 2], [3, 4]])
是二维数组。
二、关键联系
方面 | 描述 |
---|
表现形式 | 二维数组可以直接视为矩阵,因为其形状和索引方式与数学矩阵完全一致。 |
操作兼容性 | 许多针对矩阵设计的运算(如乘法、转置)在二维数组上同样有效。 |
库的支持 | NumPy 等科学计算库模糊了二者界限,提供 np.matrix (专门用于矩阵运算)和 ndarray (通用数组)。 |
三、关键区别
特性 | 矩阵(Mathematics) | 数组(Programming) |
---|
维度限制 | 仅限二维 | 可有一维、二维、三维及以上 |
用途侧重 | 线性代数运算 | 通用数据存储与处理 |
乘法行为 | 严格矩阵乘法(需满足维度规则) | 默认按元素相乘(逐元素操作) |
数据类型 | 通常为数值类型 | 可包含任意数据类型(如字符串) |
灵活性 | 固定结构 | 可动态调整形状 |
四、NumPy 中的特殊处理
ndarray
(多维数组)
matrix
(专用矩阵类)
五、总结
- 理论层面:矩阵是数学上的二维结构,而数组是编程中的通用数据容器。
- 实践层面:在 NumPy 中,二维数组可以当作矩阵使用,但需注意默认的逐元素操作与矩阵乘法的区别。
- 推荐做法:优先使用
ndarray
,因其灵活性更高;若需严格矩阵运算,可通过 @
运算符或 np.dot()
实现。
示例对比
import numpy as np# 二维数组(默认按元素操作)
arr = np.array([[1, 2], [3, 4]])
print("数组乘法(逐元素):\n", arr * arr) # 输出 [[1,4], [9,16]]# 矩阵乘法(需使用 @ 或 np.dot)
print("矩阵乘法:\n", arr @ arr) # 输出 [[7,10], [15,22]]