numpy中的矩阵与数学上的矩阵的关系
➤00 矢量、矩阵
在数学上,矢量和矩阵之间具有很强的联系。矢量可以看成行数、或者列数为1的矩阵。所以它可以被分成行矢量,或者列矢量。
下面分别表示了一个行矢量和一个列矢量。
x ˉ = [ x 1 , x 2 , x 3 , ⋯ , x n ] \bar x = \left[ {x_1 ,x_2 ,x_3 , \cdots {\rm{,}}x_n } \right] xˉ=[x1,x2,x3,⋯,xn]
x ˉ = [ x 1 x 2 ⋮ x n ] \bar x =
通常情况下,如果不加以特别的说明,矢量都当做列矢量,通过转置来转换行向量与列向量。
numpy是python中进行数学运算的库,包括有对于矩阵运算的各种操作。下面对于在numpy中表示矢量、矩阵中与数学上的对应关系进行梳理。
➤01 Numpy中的矩阵
1.矩阵初始化
(1) 初始化
获得一个两行三列的矩阵: R 2 × 3 R_{2 \times 3} R2×3
Z = array([[1,2,3],[2,3,4]])
printf(Z)
printf(Z.shape)
- 1
- 2
- 3
输出结果:
[[1 2 3]
[2 3 4]]
3
通过numpy.array()函数可以将一个二维的list转换成numpy中的矩阵。
获得一个随机的 R 2 × 3 R_{2 \times 3} R2×3
X = random.randn(2, 3)
printf(X)
printf(X.shape)
- 1
- 2
- 3
输出:
[[ 2.21298231 0.28727186 0.2434369 ]
[-0.90934184 -0.10003816 2.27751277]]
(2) 访问行或者列
对于numpy中的二维矩阵中,访问行向量使用第一个索引即可。如果访问列向量,则需要转置之后在访问。
2.矩阵转置
printf(Z.T)
- 1
输出结果:
[[1 2]
[2 3]
[3 4]]
3.矩阵的点积
printf(dot(Z.T, Z))
printf(dot(Z, Z.T))
- 1
- 2
输出结果
[[ 5 8 11]
[ 8 13 18]
[11 18 25]]
[[14 20]
[20 29]]
➤02 Numpy中矩阵与向量
对于numpy中的函数来讲,它的矩阵、向量应该是一个二维矩阵。
1.行向量
Z = array([[1,2,3]])
显示:[[1 2 3]], shape:(1,3)
Z T ⋅ Z = [ 1 2 3 2 4 6 3 6 9 ] Z^T \cdot Z =
Z ⋅ Z T = 14 Z \cdot Z^T = 14 Z⋅ZT=14
2.列向量
Z = array([1,2,3]).reshape(-1, 1)
printf(Z)
printf(Z.shape)
- 1
- 2
- 3
Z T ⋅ Z , Z ⋅ Z T Z^T \cdot Z,\,\,Z \cdot Z^T ZT⋅Z,Z⋅ZT分别为:
[[14]]
[[1 2 3]
[2 4 6]
[3 6 9]]
➤03 Numpy一维数组
如果只使用numpy中的array定义一个一维数组,那么这个矩阵在后面的操作中就不再区分行向量,还是列向量了。
Z = array([1,2,3])
printf(Z)
printf(Z.shape)
- 1
- 2
- 3
[1 2 3]
(3,)
对于两个等长的一维numpy的数组,无论如下进行什么操作,所得到的都是矢量之间的内积。
printf(dot(Z.T, Z))
printf(dot(Z, Z.T))
- 1
- 2
结果:
14
14
文章来源: zhuoqing.blog.csdn.net,作者:卓晴,版权归原作者所有,如需转载,请联系作者。
原文链接:zhuoqing.blog.csdn.net/article/details/109738434
- 点赞
- 收藏
- 关注作者
评论(0)