一、numpy模块


返回

1.1 jupyter基本使用

  • 切换Python环境

    $ conda deactivate  # 退出anaconda环境
    $ conda activate  # 进入anaconda环境
    
  • 终端启动jupyter

    $ jupyter notebook
    
  • 快捷键

    a  # 上面添加一行
    b  # 下面添加一行
    
    m  # markdown模式
    y  # code模式
    
    shift+enter  # 执行cell
    
    tab  # 自动补全
    shift+tab  # 帮助文档
    
    

1.2 numpy数组创建

  • 使用numpy.array()创建数组

    import numpy as np
    
    np.array(object, dtype=None, *, copy=True, order='K', subok=False, ndmin=0)
    
    np.array([1,2,3])  # 一维数组
    np.array([[1,2,3],[1,2,3]])  # 二维数组
    
    # 数组类型优先级:字符串 > 浮点型 > 整型 
    
    
  • 使用matplotlib.pyplot创建数组

    import matplotlib.pyplot as plt
    
    # 把图片读进数组:三维数组(行、列、颜色)
    img_arr = plt.imread('./demo1.jpeg') 
    
    # 对图片数据进行操作
    img_arr = img_arr - 50
    
    # 可视化图片
    plt.imshow(img_arr)
    
    
  • 使用numpyroutines创建数组

    import numpy as np
    
    # 3行4列
    np.ones(shape=(3,4))
    """
    array([[1., 1., 1., 1.],
           [1., 1., 1., 1.],
           [1., 1., 1., 1.]])
    """
    
    # 一维等差数列,num 份数
    np.linspace(0,100,num=21)
    """
    array([  0.,   5.,  10.,  15.,  20.,  25.,  30.,  35.,  40.,  45.,  50.,
            55.,  60.,  65.,  70.,  75.,  80.,  85.,  90.,  95., 100.])
    """
    
    # 一维等差数列,step 步长
    np.arange(10,50,step=2)
    """
    array([10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42,
           44, 46, 48])
    """
    
    # 二维随机数组,size 行列
    np.random.randint(0,100,size=(5,3))
    """
    array([[43, 21, 45],
           [51, 36, 32],
           [54, 12, 81],
           [31, 81, 48],
           [83, 78, 53]])
    """
    
    

1.3 数组常用属性

  • 数组

    arr = np.random.randint(0,100,size=(5,3))
    
    arr.shape  # 数组形状:(5,3)
    arr.ndim  # 数组维度:2
    arr.size  # 数组元素个数:15
    arr.dtype  # 数组内元素的数据类型:dtype('int64')
    type(arr)  # 数组的数据类型:numpy.ndarray
    
    # 修改数组内元素的数据类型
    arr.dtype = 'uint8'
    
    

1.4 索引、切片、反转、变形、聚合

  • 索引

    arr[0]  # 取第1行
    arr[[0,1,2]]  # 取前3行
    arr[0][1]  # 取第1行第2列
    
    
  • 切片

    # arr[行切片, 列切片]
    arr[0:2]  # 前2行
    arr[:, 0:2]  # 前2列
    arr[0:3, 0:2]  # 前3行 + 前2列
    
    # 例子:图片剪裁
    img_arr1 = img_arr[50:600, 100:500]
    
    
  • 反转

    arr[::-1]  # 行反转
    arr[::, ::-1]  # 列反转
    arr[::-1, ::-1]  # 行反转 + 列反转
    
    
  • 变形

    arr.reshape((3,5))  # 变成3行5列
    arr.reshape((15,))  # 变成一维数组
    
    # 级联操作:对数组进行横向或纵向拼接,同维度数组可拼接
    np.concatenate((arr,arr), axis=0)  # 列拼接
    np.concatenate((arr,arr), axis=1)  # 行拼接
    
    # 例子:图片拼接
    img_arr1 = np.concatenate((img_arr,img_arr,img_arr,img_arr), axis=1)
    
    
  • 聚合

    arr.sum()  # 求和
    arr.sum(axis=0)  # 求每一列的和
    arr.sum(axis=1)  # 求每一行的和
    arr.max(axis=0)  # 求每一列的的最大值
    arr.min(axis=1)  # 求每一行的的最小值
    arr.mean()  # 求平均值
    
    

1.5 数学函数

  • 数学函数

    np.sin(2.5)  # 求sin值
    np.cos(arr)  # 求数组内元素的cos值
    np.tan()
    
    np.around(3.1415, decimals=2)  # 四舍五入
    
    np.ptp(arr, axis=1)  # 每一行元素最大值与最小值之差
    
    # 标准差(一组数据平均值分散程度的度量)
    # 公式:std = sqrt(mean((x-x.mean())**2))
    arr.std()
    
    # 方差(标准差是方差的平方根)
    # 公式:std = mean((x-x.mean())**2)
    arr.var()
    
    # 标准单位矩阵
    np.eye(3)
    """
    array([[1., 0., 0.],
           [0., 1., 0.],
           [0., 0., 1.]])
    """
    
    # 矩阵转置(行列转换)
    arr.T
    
    # 矩阵相乘(左侧矩阵每一行 与 右侧矩阵每一列 乘积之和)
    np.dot(arr, arr.T)
    
    
返回