最近在学习鱼书(深度学习入门),于是打算持续更新这个系列,由于自己有一定python基础,所以选择那些基础python没涉及到的东西摘抄并补充。在看书的过程中,感受到鱼书不愧于入门教程,十分的简洁,但带来许多问题,学的不是那么的深刻,于是想对于每一节的代码进行补充和自己的理解,当然还有一些容易报错的地方。
1.Numpy库
实现类似于matlab的矩阵运算
import numpy
x = [1 , 2 , 3]
y = numpy.array(x)
print(y)
type(y) #class 'numpy.ndarray'
#numpy.ndarray数组更类似于 matlab中矩阵 可进行类似matlab中矩阵运算
#生成2*2矩阵
A = numpy.array([[1,2],[3,4]])
A.shape #看几*几
A.dtype #看数据类型
B= numpy.array([[4,3],[2,1]])
A+B
A-B
A*B # 对应元素相运算 不是线代里面矩阵运算 类似matlab中 .*
#广播 boardcast
B = numpy.array([10,20])
A = numpy.array([[1,2],[3,4]])
A*B #可以运算 相当于
B = numpy.array([[10,20],[10,20])
A*B #结果与上面一样 called boardcast
#矩阵元素索引
x[0] # 第一行
x[0][0] #第一行第一列 即我们日常说的 (1,1)
x[1][1] #第二行第二列 注意索引从0开始的
x[0,0] #第一行第一列 matlab既视感
x[:,0] #第一列matlab既视感
x[:,1] #第二列matlab既视感
X = x.flatten() #转换为一维数组
X[numpy.array([0,1,2,3])] #一维数组 使用ndarray类型一次访问多个元素
X >3 # 对每个元素进行判断 分别返回ndaray类型bool值 array([False, True, False, True, False, True])
X[X>3] #返回满足条件的元素数组
补充真正的矩阵乘法
import numpy as np
a = np.array([[1,2],[3,4]])
b = np.array([[2,1],[3,4]])
print(a)
print(b)
#每个元素相乘 下面两个方法
a*b
numpy.multiply(a,b)
#真正意义上的矩阵乘法
np.matmul(a,b)
np.matmul(b,a) #结果不同
广播图示(选自鱼书1.5numpy 15页)
2. matplotlib 库
用pyplot画图 , 下面介绍了 简单图形的绘制 绘制sin和cos图像
import numpy
import matplotlib.pyplot
x = numpy.arange(0,6,0.1) #arange (开始 结束 步距 )
y = numpy.sin(x)
matplotlib.pyplot.plot(x,y)
matplotlib.pyplot.show()
#高级的画法 matlab既视感
y1 = numpy.sin(x)
y2 = numpy.cos(x)
matplotlib.pyplot.plot(x,y1,label='sin')
matplotlib.pyplot.plot(x,y2,linestyle='--',label='cos') #这里设置了线型linestyle
matplotlib.pyplot.xlabel('x') # y axis
matplotlib.pyplot.ylabel('y') # x axis
matplotlib.pyplot.title('x and y relationship') # title
matplotlib.pyplot.legend(loc='upper right') #图例 loc表示位置
matplotlib.pyplot.show()
实现image读取并显示,注意图片格式一定一定要是png格式,有时候单单改后缀还不行,总之不是原本的png格式很容易报错
import matplotlib.pyplot as plt
from matplotlib.image import imread
img = imread(r'C:\Users\lenovo\Desktop\杂项\照片1.ara\show.png') #建议用绝对路径
plt.imshow(img)
plt.show()