什么是矩阵
矩阵是对向量的扩展
⎝⎜⎜⎛15913261014371115481216⎠⎟⎟⎞
在前面我们了解到向量是对数的扩展,一个向量表示一组数。
上面展示一个 4×4 矩阵(4 行 4 列)。
- 矩阵是对向量的扩展,一个矩阵表示一组向量;
- 横着看就是行向量,竖着看就是列向量;
- 行数等于列数,是方阵;
- 3×4 代表 3 行 4 列
A=⎝⎛a11a21a31a12a22a32a13a23a33a14a24a34⎠⎞
上述公式就是一个矩阵,其中元素们的下标第一位数是行数,第二位数是列数。
矩阵就是表格
生活中常见的矩阵就是表格,比如:
行向量代表每个同学的各门科目的分数,列向量代表每门科目的分数。
矩阵的其他应用
当然,除了上述对矩阵的解释,矩阵更多的被应用在表示一组变换,一个空间
实现矩阵
新建 Matrix.py
from .Vector import Vector
class Matrix:
def __init__(self, list2d): self._values = [row[:] for row in list2d]
def row_vector(self, index): """返回矩阵的第index个行向量""" return Vector(self._values[index])
def col_vector(self, index): """返回矩阵的第index个列向量""" return Vector([row[index] for row in self._values])
def __getitem__(self, pos): """返回矩阵pos位置的元素""" r, c = pos return self._values[r][c]
def size(self): """返回矩阵的元素个数""" r, c = self.shape() return r * c
def row_num(self): """返回矩阵的行数""" return self.shape()[0]
__len__ = row_num
def col_num(self): """返回矩阵的列数""" return self.shape()[1]
def shape(self): """返回矩阵的形状: (行数, 列数)""" return len(self._values), len(self._values[0])
def __repr__(self): return "Matrix({})".format(self._values)
__str__ = __repr__
|
矩阵的基本运算
矩阵加法
假设:
A=⎝⎜⎜⎛a11a21…ar1a12a22…ar2…………a1ca2c…arc⎠⎟⎟⎞B=⎝⎜⎜⎛b11b21…br1b12b22…br2…………b1cb2c…brc⎠⎟⎟⎞
则:
A+B=⎝⎜⎜⎛a11+b11a21+b21…ar1+br1a12+b12a22+b22…ar2+br2…………a1c+b1ca2c+b2c…arc+brc⎠⎟⎟⎞
矩阵乘法
假设:
A=⎝⎜⎜⎛a11a21…ar1a12a22…ar2…………a1ca2c…arc⎠⎟⎟⎞
则:
k⋅A=⎝⎜⎜⎛k⋅a11k⋅a21…k⋅ar1k⋅a12k⋅a22…k⋅ar2…………k⋅a1ck⋅a2c…k⋅arc⎠⎟⎟⎞