五、数组间的运算1 数组与数的运算

arr = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]])
arr + 1
arr / 2
# 可以对比python列表的运算,看出区别
a = [1, 2, 3, 4, 5]
a * 3

2 数组与数组的运算

arr1 = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]])
arr2 = np.array([[1, 2, 3, 4], [3, 4, 5, 6]])

2.1 广播机制

数组在进行矢量化运算时,要求数组的形状是相等的。当形状不相等的数组执行算术运算的时候numpy转置,就会出现广播机制,该机制会对数组进行扩展,使数组的shape属性值一样,这样,就可以进行矢量化运算了。下面通过一个例子进行说明:

arr1 = np.array([[0],[1],[2],[3]])
arr1.shape
# (4, 1)
arr2 = np.array([1,2,3])
arr2.shape
# (3,)
arr1+arr2
# 结果是:
array([[1, 2, 3],
      [2, 3, 4],
      [3, 4, 5],
      [4, 5, 6]])

上述代码中,数组arr1是4行1列,arr2是1行3列。这两个数组要进行相加,按照广播机制会对数组arr1和arr2都进行扩展,使得数组arr1和arr2都变成4行3列。

下面通过一张图来描述广播机制扩展数组的过程:

numpy转置_矩阵的逆等于矩阵的转置_矩阵与转置矩阵相乘

广播机制实现了时两个或两个以上数组的运算,即使这些数组的shape不是完全相同的numpy转置,只需要满足如下任意一个条件即可。

广播机制需要扩展维度小的数组,使得它与维度最大的数组的shape值相同,以便使用元素级函数或者运算符进行运算。

如果是下面这样,则不匹配:

A (1d array): 10
B (1d array): 12
A (2d array):      2 x 1
B (3d array):  8 x 4 x 3

六、数学:矩阵1 矩阵和向量1.1 矩阵

矩阵,英文matrix,和array的区别矩阵必须是2维的,但是array可以是多维的。

如图:这个是 3×2 矩阵,即 3 行 2 列,如 m 为行,n 为列,那么 m×n 即 3×2

矩阵的维数即行数×列数

矩阵元素(矩阵项):

矩阵的逆等于矩阵的转置_矩阵与转置矩阵相乘_numpy转置

Aij 指第 i 行,第 j 列的元素。

1.2 向量

向量是一种特殊的矩阵,讲义中的向量一般都是列向量,下面展示的就是三维列 向量(3×1)

矩阵与转置矩阵相乘_numpy转置_矩阵的逆等于矩阵的转置

2 加法和标量乘法

矩阵的加法:行列数相等的可以加。

例:

矩阵的逆等于矩阵的转置_numpy转置_矩阵与转置矩阵相乘

矩阵的乘法:每个元素都要乘。

例:

numpy转置_矩阵与转置矩阵相乘_矩阵的逆等于矩阵的转置

组合算法也类似。

3 矩阵向量乘法

矩阵和向量的乘法如图:m×n 的矩阵乘以 n×1 的向量,得到的是 m×1 的向量

例:

1*1+3*5 = 16
4*1+0*5 = 4
2*1+1*5 = 7

矩阵乘法遵循准则:

(M行, N列)*(N行, L列) = (M行, L列)

4 矩阵乘法

矩阵乘法:

m×n 矩阵乘以 n×o 矩阵,变成 m×o 矩阵。

举例:比如说现在有两个矩阵 A 和 B,那 么它们的乘积就可以表示为图中所示的形式。

矩阵与转置矩阵相乘_矩阵的逆等于矩阵的转置_numpy转置

练一练

求矩阵AB的结果

答案:

5 矩阵乘法的性质

矩阵的乘法不满足交换律:A×B≠B×A

矩阵的乘法满足结合律。即:A×(B×C)=(A×B)×C

单位矩阵:在矩阵的乘法中,有一种矩阵起着特殊的作用,如同数的乘法中的 1,我们称 这种矩阵为单位矩阵.它是个方阵,一般用 I 或者 E 表示,从 左上角到右下角的对角线(称为主对角线)上的元素均为 1 以外全都为 0。如:

6 逆、转置

矩阵的逆:如矩阵 A 是一个 m×m 矩阵(方阵),如果有逆矩阵,则:

低阶矩阵求逆的方法:

1.待定系数法

2.初等变换

矩阵的转置:设 A 为 m×n 阶矩阵(即 m 行 n 列),第 i 行 j 列的元素是 a(i,j),即:

A=a(i,j)

定义 A 的转置为这样一个 n×m 阶矩阵 B,满足 B=a(j,i),即 b (i,j)=a (j,i)(B 的第 i 行第 j 列元素是 A 的第 j 行第 i 列元素),记 A^T = B

直观来看,将 A 的所有元素绕着一条从第 1 行第 1 列元素出发的右下方 45 度的射线作 镜面反转,即得到 A 的转置。

例:

矩阵的逆等于矩阵的转置_矩阵与转置矩阵相乘_numpy转置

7 矩阵运算

矩阵与转置矩阵相乘_矩阵的逆等于矩阵的转置_numpy转置

矩阵的逆等于矩阵的转置_numpy转置_矩阵与转置矩阵相乘

7.1 矩阵乘法api:

>>> a = np.array([[80, 86],
[82, 80],
[85, 78],
[90, 90],
[86, 82],
[82, 90],
[78, 80],
[92, 94]])
>>> b = np.array([[0.7], [0.3]])
>>> np.matmul(a, b)
array([[81.8],
      [81.4],
      [82.9],
      [90. ],
      [84.8],
      [84.4],
      [78.6],
      [92.6]])
>>> np.dot(a,b)
array([[81.8],
      [81.4],
      [82.9],
      [90. ],
      [84.8],
      [84.4],
      [78.6],
      [92.6]])

np.matmul和np.dot的区别:

二者都是矩阵乘法。np.matmul中禁止矩阵与标量的乘法。在矢量乘矢量的內积运算中,np.matmul与np.dot没有区别。

限时特惠:本站每日持续更新海量设计资源,一年会员只需29.9元,全站资源免费下载
站长微信:ziyuanshu688