深度学习入门:基于Python的理论与实现——第一章——python入门(Numpy、Matplotlib)

第1章——python入门(Numpy、Matplotlib)

一,Numpy。Numpy的数组类(numpy.array)中提供了很多便捷的方法,在实现深度学习时,我们将使用这些方法

  1. 导入Numpy:import numpy as np(“将numpy作为np导入”,需要事先安装好numpy包)

  1. 生成Numpy数组

    要生成Numpy数组,需要使用np.array()方法。np.array()接收Python列表作为参数,生成Numpy数组(numpy.ndarray)

  1. Numpy的算术运算

    import numpy as np
    # numpy的部分用法演示
    A = np.array([1.0, 2.0, 3.0])
    B = np.array([2.0, 4.0, 6.0])
    print(A + B)
    print(A - B)
    # 这里的运算规则与线性代数中的矩阵乘法不同,这里是对应位置元素的运算。需要保证x和y中的元素个数相同,否则会报错
    print(A * B)
    print(A / B)
    ​
    A = np.array([[1, 2], [3, 4], [5, 6]])
    B = np.array([[1, 2, 3], [4, 5, 6]])
    # 在numpy中,使用*运算符执行的是元素级别的乘法,而不是矩阵乘法。因此,当尝试执行A*B时,由于数组A和B的形状不符合广播规则,会导致无法正常运行
    # print(A * B)
    # 要执行矩阵乘法,可以使用np.dot函数或@运算符
    print(np.dot(A, B), end="\n\n")
    print(A @ B, end="\n\n")

    补充:矩阵的运算:

    (1)加减运算要求同型矩阵(拥有相同的行数和列数)

    (2)矩阵乘以或者除以一个常数,表示矩阵中所有的元素乘以或者除以这个常数

    (3)矩阵A乘以矩阵B,需要满足A的列数等于B的行数,否则无意义。

    (4)各种运算律:

    ①矩阵乘法运算一般不满足交换律,比如AB≠BA

    ②不满足消去律,如AB=AC且A≠0,不能得到B=C

    ③AB=0不能得到A=0或B=0

    ④满足结合律,如ABC=(AB)C=A(BC)

    ⑤满足分配率,如A(B+C)=AB+AC,(A+B)C=AC+BC

    (5)方阵的乘幂,如A²=A×A(要求A的行数和列数相同,即A为方阵)

    (6)转置:在矩阵右上角写大写的T表示转置,矩阵的第n行变为第n列

    (7)转置的一些性质:

    ①矩阵连续转置两次等于它本身

    ②(A+B)的转置=A的转置+B的转置

    ③kA的转置等于k倍的A的转置

    ④AB的转置=B的转置乘以A的转置

    ⑤如果A=A的转置,则称A为对称矩阵(如对角矩阵)

  1. Numpy的N维数组

    Numpy不仅可以生成一维数组,也可以生成多维数组,比如:

    print(A)
    print(A.shape)
    print(A.dtype, end="\n\n")

    数学上一般将一维数组称为向量,将二维数组称为矩阵。另外,可以将一般化之后的向量或矩阵等统称为张量(tensor)

  1. 广播

    Numpy中,形状不同的数组之间也可以进行运算。如之前的2×2的矩阵A乘以标量10,可以看做标量10被扩展成了2×2的形状,然后再与矩阵A进行乘法运算,这个巧妙的功能称为广播。综上,因为Numpy有广播功能,所以不同形状的数组之间也可以顺利地进行运算

  1. 访问元素

    元素的索引从0开始,可以通过索引进行访问,也可以使用for语句访问各个元素。Numpy还可以使用数组访问各个元素。如:

    print(A[0])
    print(A[0][1])
    for i in A:
        print(i)
    ​
    # 将A转化为一维数组
    C = A.flatten()
    print(C, end="\n\n")
    print(C[np.array([0, 2, 4])], end="\n\n")
    ​
    # 获取满足一定条件的元素
    print(C > 3)
    print(C[C > 3])

二,Matplotlib。在深度学习的实验中,图形的绘制和数据的可视化非常重要。Matplotlib是用于绘制图形的库,使用Matplotlib可以轻松地绘制图形和实现数据的可视化。

  1. 绘制简单图形。可以使用Matplotlib的pyplot模块绘制图形。如绘制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()
  1. pyplot的功能

    在刚才的sin函数图像中,尝试追加cos函数的图形,并尝试使用pyplot的添加标题和x轴标签名等其他功能

    # matplotlib的部分用法演示
    # 生成数据
    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, label="cos", linestyle="--")  # 用虚线绘制
    plt.xlabel("x")  # x轴标签
    plt.ylabel("y")  # y轴标签
    plt.title('sin & cos')  # 标题
    plt.legend()  # 显示图例
    plt.show()
  1. 显示图像

    pyplot中还提供了用于显示图像的方法imshow()。另外,可以使用matplotlib.image模块的imread()方法读入图像

    from matplotlib.image import imread
    img = imread('D:/Users/YHW/Desktop/需求层次.jpg')
    plt.imshow(img)
    plt.show()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值