• python和SciPy速成


    1、熟悉python的基本语法

    2、熟悉Numpy、Matplotlib和Pandas【能够阅读和编写基于Python的机器学习的脚本】

    • 1、NumPy入门
      • NumPy为SciPy提供了基本的数据结构和运算,其中主要的是ndarrays多维数组,它提供了高效的矢量运算功能。
    import numpy as np
    my_array = np.array([1,2,3])
    print(my_array)
    print(my_array.shape)
    '''
    [1 2 3]
    (3,)
    '''
    my_array = np.array([[1,2,3],[1,2,3],[1,2,3]])
    print(my_array)
    print(my_array.shape)
    '''
    [[1 2 3]
     [1 2 3]
     [1 2 3]]
    (3, 3)
    '''
    my_array = np.array([[1,2,3],[1,2,3]])
    print(my_array)
    print(my_array.shape)
    '''
    [[1 2 3]
     [1 2 3]]
    (2, 3)
    总结:
        1、数组(矩阵)只有一个维度时,shape只有shape[0],返回的是该一维数组(矩阵)中元素的个数,通俗点说就是返回列数
        2、数组有两个维度时,返回的就是一个元组,第一个数值表示行数,第二个数值表示列数
    '''
    
    print('='*40)
    # 1.2、访问创建出来数组的某一行或某一列
    my_array = np.array([[1,2,3],[4,5,6],[7,8,9]])
    print(my_array)
    print(my_array.shape)
    
    print(f'第一行:{my_array[0]}')
    print(f'最后一行:{my_array[-1]}')
    print(f'倒数第二行:{my_array[-2]}')
    print(f'访问第三列数据:{my_array[:,2]}')
    print(f'访问第二行和第三列数据:{my_array[1,2]}')
    '''
    [[1 2 3]
     [4 5 6]
     [7 8 9]]
    (3, 3)
    第一行:[1 2 3]
    最后一行:[7 8 9]
    倒数第二行:[4 5 6]
    访问第三列数据:[3 6 9]
    访问第二行和第三列数据:6
    
    总结:
        1、根据你定义的数组形状来访问
        2、特点是序列索引都是从0开始
        3、如果是二维数组array[行,列]
    '''
    
    print('='*40)
    # 1.3、通过NumPy可以直接进行算术运算(向量运算)
    my_array1 = np.array([[1,2,3],[1,2,3],[1,2,3]])
    my_array2 = np.array([[1,1,1],[2,2,2],[3,3,3]])
    
    print(f'向量加法:\n{my_array1 + my_array2}')
    print(f'向量乘法:\n{my_array1 * my_array2}')
    '''
    向量加法:
    [[2 3 4]
     [3 4 5]
     [4 5 6]]
    向量乘法:
    [[1 2 3]
     [2 4 6]
     [3 6 9]]
    总结:
        1、这里向量乘法就是单纯的对应位相乘
    '''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 2、Matplotlib入门
      • 1、Matplotlib是Python中著名的2D绘图库,使用方法比较简单,按照下面三步进行就能很简单地完成绘图:
        • 1.1、调用plot()、scatter()等方法,并为绘图填充数据。数据是NumPy的ndarray类型的对象。
        • 1.2、设定数据标签,适用xlabel()、ylabel()方法。
        • 1.3、展示绘图结果,适用show()方法。
      • 2、在 链接 中提供了超过100种示例,具体参考Matplotlib API的说明。
    import numpy as np
    import matplotlib.pyplot as plt
    # 2.1、绘制线条图
    my_array = np.array([[1,2,3],[2,4,6],[3,9,27]]) #定义绘图数据
    
    plt.plot(my_array)  #初始化绘图
    plt.xlabel('x axis')    #设定x轴
    plt.ylabel('y axis')    #设定y轴
    plt.show()  #结果见附图1
    
    # 2.2、绘制散点图
    my_array1 = np.array([4,7,8])   #定义绘图数据
    my_array2 = np.array([11,22,33])    #定义绘图数据
    plt.scatter(my_array1,my_array2)    #初始化绘图
    plt.xlabel('x axis')
    plt.ylabel('y axis')
    plt.show()  #结果见附图2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 3、Pandas入门
      • 1、Pandas提供了用于机器学习的复杂数据类型:矢量运算方法和数据分析方法。Pandas也提供了多种数据结构。
      • 2、series(★★★):一维数组,与NumPy中的一维Array类似。二者与Python基本数据结构List也很相近,区别是:List
        中的元素可以是不同的数据类型,而Array和Series中则只允许存储相同的数据类型,这样可以更有效地使用内存,提高运算效率。
      • 3、Time-Series:以时间为索引的Series。
      • 4、DataFrame(★★★):二维的表格型数据结构。很多功能与R语言中的data.frame类似。可以将DataFrame理解为Series的容器。
      • 5、Panel:三维数组,可以理解为DataFrame的容器。
      • 6、Pandas是一个功能强大的对数据进行切片的工具,Pandas API参考官网 链接
    import numpy as np
    # 3.1、Series【建立Series(n. 连续)时可以设定index,也可以像访问Numpy数组或字典一样来访问Series元素】
    import pandas as pd
    my_array = np.array([1,2,3])
    index =['a','b','c']
    my_Series = pd.Series(my_array,index=index)
    print(f'my_Series:\n{my_Series}')
    print(f'Series中的第一个元素:{my_Series[0]}')
    value = my_Series['c']
    print(f'Series中的c索引元素:{value}')
    '''
    my_Series:
    a    1
    b    2
    c    3
    dtype: int32
    Series中的第一个元素:1
    Series中的c索引元素:3
    '''
    # 3.2、DataFrame【DataFrame是一个可以指定行和列标签的二维数组,数据可以通过指定列名来访问特定列的数据】
    my_array = np.array([[1,2,3],[2,3,4],[3,4,5]])
    row_index = ['row1','row2','row3']
    col_name = ['col1','col2','col3']
    my_dataframe = pd.DataFrame(data=my_array,index=row_index,columns=col_name)
    print(my_dataframe)
    print('访问col3的数据:')
    print(my_dataframe['col3'])
    # print('访问row1的数据:')
    # print(my_dataframe['row1'])     #KeyError: 'row1'
    '''
          col1  col2  col3
    row1     1     2     3
    row2     2     3     4
    row3     3     4     5
    访问col3的数据:
    row1    3
    row2    4
    row3    5
    Name: col3, dtype: int32
    '''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    附录

    • 附图1
      在这里插入图片描述

    • 附图2
      在这里插入图片描述

  • 相关阅读:
    Docker与虚拟化技术浅析第一弹之docker与Kubernetes
    Redis 分布式锁
    LLM.int8()——自适应混合精度量化方法
    岩土工程安全监测无线振弦采集仪在无线组网的关键要点
    Python获取某平台主播照片, 实现颜值检测, 进行排名
    python3-基本数据类型
    Kubeadm极速部署Kubernetes 1.24版本集群
    java计算机毕业设计海康物流源码+mysql数据库+系统+lw文档+部署
    RestTemplate今天过去将来
    硬核Fiddler抓包工具大型攻略(完)Fiddler终极篇
  • 原文地址:https://blog.csdn.net/sz1125218970/article/details/128134783