第1章
Python入门
因为笔者之前已经学习过了python,所以对于小鱼书开头对于python的介绍并没有过多的学习,只是简单看了一下,做了一个简略的复习。主要重点还是放在了关于numpy和matplotlib库的介绍学习上。
首先是一个numpy和matplotlib库的简介,NumPy是用于数值计算的库,提供了很多高级的数学算法和便利的数组(矩阵)操作方法。而Matplotlib是用来画图的库。使用Matplotlib能将实验结果可视化,并在视觉上确认深度学习运行期间的数据。
学习numpy库的第一步便是生成NumPy数组,需要使用np.array()方法。np.array()接收Python列表作为参数,生成NumPy数组(numpy.ndarray)。
首先第一步利用np.array()生成两个数组,分别命名为数组x与数组y,接下来我们需要学习数组的运算:首先要保证数组x和数组y的元素个数是相同的(假设两者均是元素个数为3的一维数组)。当x和y的元素个数相同时,可以对各个元素进行算术运算。如果元素个数不同,程序就会报错,所以元素个数保持一致非常重要。另外,“对应元素的”的英文是element-wise,所以数组元素的运算也被称为element-wise运算。
NumPy数组不仅可以进行element-wise运算,也可以和单一的数值(标量)组合起来进行运算。此时,需要在NumPy数组的各个元素和标量之间进行运算,这个功能也被称为广播。
NumPy不仅可以生成一维数组(排成一列的数组),也可以生成多维数组。基本上将二维数组称为“矩阵”,将三维数组及三维以上的数组称为“张量”或“多维数组”。
此外,Python等动态类型语言一般比C和C++等静态类型语言(编译型语言)运算速度慢。实际上,如果是运算量大的处理对象,用 C/C++写程序更好。为此,当 Python中追求性能时,人们会用C/C++来实现处理内容。Python则承担“中间人”的角色,负责调用那些用 C/C++写的程序。NumPy中,主要的处理也都是通过C或C++实现的。因此,我们可以在不损失性能的情况下,使用 Python便利的语法。
之后学习numpy与matplotlib中的pyplot模块合作绘制图形,以下为一个实例
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()
这个代码便可以绘制出sin函数的图形 ,若是在刚才的sin函数的图形中,我们尝试追加cos函数的图形,并尝试使用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()
如果读者还想导入显示图像,那么pyplot 中还提供了用于显示图像的方法 imshow()。另外,也可以使用matplotlib.image模块的imread()方法读入图像。这便是笔者认为第一章的学习内容了