NumPy
NumPy中,np.array()接收Python列表作为参数,生成NumPy数组(numpy.ndarray)
import numpy as np # 导入库 x = np.array([1.0, 2.0, 3.0]) # 生成numpy数组 print(x) # [1. 2. 3.] type(x) # numpy.ndarray y = np.array([2.0, 4.0, 6.0]) print(x + y) # [3. 6. 9.] print(x - y) # [-1. -2. -3.] print(x * y) # [ 2. 8. 18.] print(x / y) # [0.5 0.5 0.5]“对应元素的”的英文是element-wise,NumPy数组不仅可以进行element-wise运算,也可以和单一的数值(标量)组合起来进行运算。此时,需要在NumPy数组的各个元素和标量之间进行运算。 这个功能也被称为广播。
x = np.array([1.0, 2.0, 3.0]) x / 2.0 # array([0.5, 1. , 1.5])NumPy不仅可以生成一维数组(排成一列的数组),也可以生成多维数组。
# 生成二维数组 A = np.array([[1, 2], [3, 4]]) print(A) # [[1 2] # [3 4]] A.shape # (2, 2) 生成一个2*2的矩阵A A.dtype # dtype('int32') 矩阵元素的数据类型 B = np.array([[3, 0], [0, 6]]) A + B A * B # 不是矩阵乘法,仍然是对应元素相乘 A * 10 # 基于广播,数乘矩阵的形状可以通过shape查看,矩阵元素的数据类型可以通过dtype查看
广播:NumPy中,形状不同的数组之间也可以进行运算。前例中,标量10被扩展成了2×2的形状,然后再与矩阵A进行乘法运算。这个巧妙的功能叫做广播(broadcast)。

A = np.array([[1, 2], [3, 4]]) B = np.array([10, 20]) C = A * B C.shape # (2,2)
NumPy可以通过索引访问元素,也可以使用数组访问各个元素。
X = np.array([[51, 55], [14, 19], [0, 4]]) print(X) print(X[0]) # [51 55] 第0行 print(X[0][1]) # 55 # 也可以使用for访问各个元素 for row in X: print(row) # 使用数组访问各个元素 X = X.flatten() # 将X转化为一维数组 print(X) X[np.array([0, 2, 4])] # 获取索引为0,2,4的元素 array([51, 14, 0]) X > 15 # array([ True, True, False, True, False, False]) X[X>15] # array([51, 55, 19])运用这个标记法可以获取满足一定条件的元素。对NumPy数组使用不等号运算符等(上例中是X > 15),结果会得到一个布尔型的数组。上例中就是使用这个布尔型数组取出了数组的各个元素(取出True对应的元素)。
Matplotlib
绘制图形
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()**显示图形。
pyplot的功能:添加标题标签等功能
import numpy as np import matplotlib.pyplot as plt # 生成数据 x = np.arange(0, 6, 0.1) 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()方法读入图像import matplotlib.pyplot as plt from matplotlib.image import imread img = imread('./tutu/0.png') #读入图像 plt.imshow(img) plt.show()
补充
from...import *语句和import的区别
import 模块:导入一个模块;注:相当于导入的是一个文件夹,是个相对路径。
from…import:导入了一个模块中的一个函数;注:相当于导入的是一个文件夹中的文件,是个绝对路径。
所以使用上的的区别是当引用文件时是:
import 导入模块,每次使用模块中的函数都要是定是哪个模块。
from…import * 导入模块,每次使用模块中的函数,直接使用函数就可以了;注因为已经知道该函数是那个模块中的了。
参考书目:《深度学习入门:基于Python的理论与实现》