学习目标

  • 了解Numpy运算速度上的优势
  • 知道数组的属性,形状、类型
  • 应用Numpy实现数组的基本操作
  • 应用随机数组的创建实现正态分布应用
  • 应用Numpy实现数组的逻辑运算
  • 应用Numpy实现数组的统计运算
  • 应用Numpy实现数组之间的运算

    纪要

    4.1 Numpy优势

    1.定义

    1. 开源的Python科学计算库,<br /> 用于快速处理任意维度的数组<br /> Numpy中,存储对象是ndarray

    2.创建

    1. np.array([])

    3.numpy的优势

    1. 内存块风格 -- 一体式存储<br /> 支持并行化运算<br /> 效率高于纯Python代码 -- 底层使用了C,内部释放了GIL

    4.2 N维数组-ndarray[**]

    1.ndarray的属性

    1. 属性名字 属性解释<br /> ndarray.shape 数组维度的元组<br /> ndarray.ndim 数组维数<br /> ndarray.size 数组中的元素数量<br /> ndarray.itemsize 一个数组元素的长度(字节)<br /> ndarray.dtype 数组元素的类型

    2.ndarray的形状

    1. np.array()<br /> 三维数组不好理解 -- excel中有多个sheet

    3.ndarray的类型

    1. bool<br /> int<br /> float<br /> str<br /> ...<br /> 注意:若不指定,整数默认int64,小数默认float64

    4.3 基本操作

    1 生成数组的方法[**]

    1.生成0和1的数组
    1. np.ones()<br /> np.ones_like()
    2.从现有数组中生成
    1. np.array -- 深拷贝<br /> np.asarray -- 浅拷贝
    3.生成固定范围数组
    1. np.linspace()<br /> nun -- 生成等间隔的多少个<br /> np.arange()<br /> step -- 每间隔多少生成数据<br /> np.logspace()<br /> 生成以10N次幂的数据
    4 生成随机数组
    1.均匀分布生成
    1. np.random.uniform()<br /> low<br /> high<br /> size
    2.正态分布[**]
    1. 均值,方差<br /> 均值 -- 图形的左右位置<br /> 方差 -- 图像是瘦,还是胖<br /> 值越小,图形越瘦高,数据越集中<br /> 值越大,图形越矮胖,数据越分散
    3.正态分布api[*]
    1. np.random.normal()<br /> low<br /> high<br /> size

    2.数组的索引、切片[*]

    1. 直接索引<br /> 先对行进行索引,再进行列索引 -- [*, #]<br /> 高维数组索引,从宏观到微观

    3.形状修改[**]

    1.对象.reshape
    1. 不进行行列互换,产生新变量
    2.对象.resize
    1. 不进行行列互换,对原值进行更改
    3.对象.T
    1. 进行行列互换

    4.类型修改[*]

    1. 对象.astype()

    5.数组去重[*]

    1. np.unique()

    4.4 ndarray运算[**]

    1.逻辑运算

    1. 大于,小于直接进行判断<br /> 赋值:满足要求,直接进行赋值

    2.通用判断函数

    1. np.all()<br /> 所有满足要求,才返回True<br /> np.any()<br /> 只要有一个满足要求,就返回True

    3.三元运算符

    1. np.where()<br /> 满足要求,赋值第一个值,否则赋值第二个值<br /> np.logical_and()<br /> 并<br /> np.logical_or()<br />

    4.统计运算

    1. min<br /> max<br /> midian<br /> mean<br /> std -- 标准差<br /> var -- 方差<br /> argmax -- 最大值下标<br /> argmin -- 最小值下标

    4.5 矩阵[*]

    1.矩阵和向量

    1. 矩阵:理解-二维数组<br /> 向量:理解-一维数组

    2.加法和标量乘法

    1. 加法: 对应位置相加<br /> 乘法: 标量和每个位置的元素相乘

    3.矩阵向量(矩阵)乘法[*]

    1. [M行, N列]*[N行, L列] = [M行, L列]

    4.矩阵乘法性质

    1. 1.满足结合律,不满足交换律

    5.单位矩阵

    1. 对角线为1,其他位置为0的矩阵

    6.逆

    1. 矩阵A*矩阵B=单位矩阵I<br /> 那么AB就互为逆矩阵

    7.转置

    1. 行列互换

    4.6 数组间运算[*]

    1.数组和数字是直接可以进行运算

    2.数组和数组

    1. 需要满足广播机制<br /> 维度相同<br /> shape对应位置为1

    3.矩阵乘法api

    1. np.dot --点乘<br /> np.matmul -- 矩阵相乘<br /> 注意:两者之间在进行矩阵相乘时候,没有区别<br /> 但是,dot支持矩阵和数字相乘