《深度学习与图像识别:原理与实践》—2.3.6 Numpy中的矩阵运算

举报
华章计算机 发表于 2019/07/24 20:21:09 2019/07/24
【摘要】 本节书摘来自华章计算机《深度学习与图像识别:原理与实践》一书中的第2章,第2.3.6节,作者是魏溪含 涂铭 张修鹏。

2.3.6 Numpy中的矩阵运算

矩阵运算(加、减、乘、除),在本书中将严格按照数学公式来进行演示,即两个矩阵的基本运算必须具有相同的行数与列数。本例只演示两个矩阵相减的操作,其他的操作读者可以自行测试。示例代码如下:

import numpy as np

myones = np.ones([3,3])

myeye = np.eye(3)       #生成一个对角线的值为1,其余值都为0的三行三列矩阵

print(myeye)

print(myones-myeye)

输出结果如下:

[[ 1.  0.  0.]

[ 0.  1.  0.]

[ 0.  0.  1.]]

[[ 0.  1.  1.]

[ 1.  0.  1.]

[ 1.  1.  0.]]

numpy.eye(N, M=None, k=0, dtype=<type ‘float’>)中第一个参数输出矩阵(行数=列数),第三个参数默认情况下输出的是对角线的值全为1,其余值全为0。

除此之外,Numpy还预置了很多函数,使用这些函数可以作用于矩阵中的每个元素。下面我们来看下表2-1。

表2-1 Numpy预置函数及说明

image.png

 

(1)矩阵之间的点乘

矩阵真正的乘法必须满足第一个矩阵的列数等于第二个矩阵的行数,矩阵乘法的函数为dot。示例代码如下:

import numpy as np

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

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

print(mymatrix.shape[1] == a.shape[0])

print(mymatrix.dot(a))

其输出结果如下:

[[22 28]

 [49 64]]

上述示例代码的原理是将mymatrix的第一行[1,2,3]与a矩阵的第一列[1,3,5]相乘然后相加,接着将mymatrix的第一行[1,2,3]与a矩阵的第二列[2,4,6]相乘然后相加,以此类推。

(2)矩阵的转置

矩阵的转置是指将原来矩阵中的行变为列。示例代码如下:

import numpy as np

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

print(a.T)

输出结果如下:

[[1 4]

 [2 5]

 [3 6]]

(3)矩阵的逆

需要首先导入numpy.linalg,再用linalg的inv函数来求逆,矩阵求逆的条件是矩阵的行数和列数必须是相同的。示例代码如下:

import numpy as np

import numpy.linalg as lg

A = np.array([[0,1],[2,3]])

invA = lg.inv(A)

print(invA)

print(A.dot(invA))

输出结果如下:

[[-1.5  0.5]

[ 1.   0. ]]

逆矩阵就是,原矩阵A.dot(invA)以及逆矩阵invA.dot(A)的结果都为单位矩阵。并不是所有的矩阵都有逆矩阵。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。