第一章python入门较为基础简单,这里对于python的介绍、安装等内容不进行赘述,简要介绍下NumPy及Maplotlib需要注意的地方。
1、NumPy
NumPy的数组类(nump.array)中为深度学习中,经常出现的数组及矩阵运算提供了很多便捷的方法。
①由于NumPy是外部库,所以首先导入库:
import numpy as np
其中,as的意思是将numpy作为np导入,相当于起了别名。之后NumPy相关方法均可以通过np来调用。
②生成NumPy数组
使用np.array()方法生成NumPy数组,参数为Python列表,使用方法如下:
>>> x = np.array([1.0, 2.0, 3.0])
>>> print(x)
[ 1. 2. 3.]
>>> type(x)
<class 'numpy.ndarray'>
附:在此介绍使用numpy随机生成指定大小矩阵的方法,在随后多用于初始化权重矩阵。
1、numpy.random.rand(d0,d1,…,dn)
rand函数根据给定维度生成[0,1)之间的数据,包含0,不包含1
dn表格每个维度
返回值为指定维度的array
np.random.rand(4,2)
结果如下:
array([[ 0.02173903, 0.44376568],
[ 0.25309942, 0.85259262],
[ 0.56465709, 0.95135013],
[ 0.14145746, 0.55389458]])
2、numpy.random.randn(d0,d1,…,dn)
randn函数返回一个或一组样本,具有标准正态分布。
dn表格每个维度
返回值为指定维度的array
样例如下:
np.random.randn() # 当没有参数时,返回单个数据
-1.1241580894939212
np.random.randn(4,3,2)
array([[[ 1.27820764, 0.92479163],
[-0.15151257, 1.3428253 ],
[-1.30948998, 0.15493686]],
[[-1.49645411, -0.27724089],
[ 0.71590275, 0.81377671],
[-0.71833341, 1.61637676]],
[[ 0.52486563, -1.7345101 ],
[ 1.24456943, -0.10902915],
[ 1.27292735, -0.00926068]],
[[ 0.88303 , 0.46116413],
[ 0.13305507, 2.44968809],
[-0.73132153, -0.88586716]]])
③numpy的算术问题
>>> x = np.array([1.0, 2.0, 3.0])
>>> y = np.array([2.0, 4.0, 6.0])
>>> x + y # 对应元素的加法
array([ 3., 6., 9.])
>>> x - y
array([ -1., -2., -3.])
>>> x * y # element-wise product
array([ 2., 8., 18.])
>>> x / y
array([ 0.5, 0.5, 0.5])
这里需要注意的是,数组x和数组y的元素个数是相同的,如果元素个数不相等,程序会报错。此外,numpy数组的各个元素可以和标量之间进行计算,这个功能称为广播,在后面运算时常会用到。
下面通过例子来看一下广播:
>>> A = np.array([[1, 2], [3, 4]])
>>> B = np.array([10, 20])
>>> A * B
array([[ 10, 40],
[ 30, 80]])
图示:
正是因为numpy有广播功能,所以不同形状的数组之间也可以顺利地进行运算。
2、Matplotlib
在学习过程中,图形的绘制和数据的可视化非常重要。
例1:绘制sin函数曲线
import numpy as np
import matplotlib.pyplot as plt
# 生成数据
x = np.arange(0, 6, 0.1) # 以0.1为单位,生成0到6的数据
y = np.sin(x)
# 绘制图形
plt.plot(x, y)
plt.show()
这里使用NumPy的arange方法生成了[0, 0.1, 0.2,…, 5.8, 5.9]的数据,将其设为x。对x的各个元素,应用NumPy的sin函数np.sin(),将x、y的数据传给plt.plot方法,然后绘制图形。最后,通过plt.show()显示图形。运行上述代码后,就会显示图sin。
例2:尝试使用pyplot的添加标题和x轴标签名等其他功能。
import numpy as np
import matplotlib.pyplot as plt
# 生成数据
x = np.arange(0, 6, 0.1) # 以0.1为单位,生成0到6的数据
y1 = np.sin(x)
y2 = np.cos(x)
# 绘制图形
plt.plot(x, y1, label="sin")
plt.plot(x, y2, linestyle = "--", label="cos") # 用虚线绘制
plt.xlabel("x") # x轴标签
plt.ylabel("y") # y轴标签
plt.title('sin & cos') # 标题
plt.legend()
plt.show()