• numpy


    3. numpy

    3.1 基本介绍

    一个开源的Python科学计算库,用于快速处理任意维度的数组

    支持常见的数组和矩阵操作

    • 使用ndarray对象【N维数组类型】来处理多维数组

    3.2 ndarray的优势

    • 内存块风格

    • ndarray 支持并行化运算(向量化运算)

    • ndarray 底层使用C语言编写,效率更高,释放了GIL

    3.3 N维数组-ndarray

    3.3.1 属性

    • 在这里插入图片描述

    3.3.2 形状

    • .shape

      • 一维、二维、三维…

    3.3.3 类型

    • 创建数组时通过dtype指定类型

      • 若不指定,整数默认int64,小数默认float64

    3.4 基本操作

    3.4.1 生成数组

    • 全0数组

      • np.zeros(shape, dtype)
    • 全1数组

      • np.ones(shape, dtype)
    • 从现有数组生成

      • array()

        • 深拷贝

          • 从现有的数组中创建
      • asarray()

        • 浅拷贝

          • 相当于索引的形式,并没有真正创建一个新的
    • 生成固定范围的数组

      • 创建等差数组 — 指定数量

        • np.linspace (start, stop, num, endpoint)

          • start:序列的起始值
          • stop:序列的终止值
          • num:要生成的等间隔样例数量,默认为50
          • endpoint:序列中是否包含stop值,默认为ture
      • 创建等差数组 — 指定步长

        • np.arange(start,stop, step, dtype)

          • step:步长,默认值为1
      • 创建等比数列

        • np.logspace(start,stop, num)

          • num:要生成的等比数列数量,默认为50
    • 生成随机数组

      • 使用 random 模块

      • 正态分布

        • 具有两个参数μ和σ的连续型随机变量的分布,一种概率分布

        • 第一参数μ是服从正态分布的随机变量的均值

        • 第二个参数σ是此随机变量的方差

        • N(μ,σ )

        • 在这里插入图片描述

        • 应用

          • 生活、生产与科学实验中很多随机变量的概率分布都可以近似地用正态分布来描述
        • 特点

          • μ决定了其位置

          • 标准差σ决定了分布的幅度

            • 在概率论和统计方差衡量一组数据时离散程度的度量

              • M为平均值,n为数据总个数,σ 为标准差,σ ^2​可以理解一个整体为方差
          • 当μ = 0,σ = 1时的正态分布是标准正态分布

          • 正态分布创建方式

            • np.random.randn(d0, d1, …, dn)

              • 从标准正态分布中返回一个或多个样本值
            • np.random.normal(loc=0.0, scale=1.0, size=None)

              • loc:float 此概率分布的均值
              • scale:float 此概率分布的标准差
              • size:int or tuple of ints 输出的shape,默认为None,只输出一个值
            • np.random.standard_normal(size=None)

              • 返回指定形状的标准正态分布的数组。
            • 举例:生成均值为1.75,标准差为1的正态分布数据,100000000个

              • x1 = np.random.normal(1.75, 1, 100000000)
      • 均匀分布

        • np.random.rand(d0, d1, …, dn)

          • 返回[0.0,1.0)内的一组均匀分布的数。
        • np.random.uniform(low=0.0, high=1.0, size=None)

          • 从一个均匀分布[low,high)中随机采样,注意定义域是左闭右开,即包含low,不包含high
          • low: 采样下界,float类型,默认值为0;
          • high: 采样上界,float类型,默认值为1
          • size: 输出样本数目,为int或元组(tuple)类型,例如,size=(m,n,k), 则输出mnk个样本,缺省时输出1个值
          • 返回值:ndarray类型,其形状和参数size中描述一致
        • np.random.randint(low, high=None, size=None, dtype=‘l’)

          • 从一个均匀分布中随机采样,生成一个整数或N维整数数组

    3.4.2 数组的索引、切片

    • 一维和列表类似
    • 二维先行后列
    • 三维同理

    3.4.3 形状修改

    • ndarray.reshape(shape, order)

      • 返回一个具有相同数据域,但shape不一样的视图
      • 行、列不进行互换
    • ndarray.resize(new_shape)

      • 修改数组本身的形状(需要保持元素个数前后相同)
      • 行、列不进行互换
    • ndarray.T

      • 数组的转置
      • 将数组的行、列进行互换

    3.4.4 类型修改

    • ndarray.astype(type)

      • 返回修改了类型之后的数组
    • 构造包含数组中原始数据字节的 Python 字节

      • ndarray.tostring([order])
      • ndarray.tobytes([order])

    3.4.5 数组去重

    • np.unique()

    3.5 ndarray运算

    3.5.1 逻辑运算

    • >
    • <
    • =

    3.5.2 通用判断函数

    • np.all()
    • np.any()

    3.5.3 三元运算符

    • np.where

    3.5.4 统计运算

    • np.max()
    • np.min()
    • np.median()
    • np.mean()
    • np.std()
    • np.var()
    • np.argmax(axis=) ——最大元素对应的下标
    • np.argmin(axis=) ——最小元素对应的下标

    3.6 数组间运算

    3.6.1 数组与数的运算

    3.6.2 数组与数组的运算

    • 需要满足广播机制

        1. 维度相等
        1. shape

    3.7 矩阵

    矩阵必须是2维的,但是array可以是多维的

    向量是一种特殊的矩阵

    3.7.1 矩阵加法和标量乘法

    • 矩阵的加法:行列数相等的可以加。
    • 矩阵的乘法:每个元素都要乘。

    3.7.2 矩阵的向量乘法

    • (M行, N列)*(N行, L列) = (M行, L列)

    3.7.3 逆

    • 矩阵的逆:如矩阵 A 是一个 m×m 矩阵(方阵),如果有逆矩阵,则:

    AA-1 = A-1A = I

    3.7.4 转置

    • 将 A 的所有元素绕着一条从第 1 行第 1 列元素出发的右下方 45 度的射线作 镜面反转,即得到 A 的转置。
    • 在这里插入图片描述

    3.7.5 矩阵乘法api

    • np.matmul

      • 禁止矩阵与标量的乘法
    • np.dot

    • 二者都是矩阵乘法

    • 在矢量乘矢量的內积运算中,np.matmul与np.dot没有区别

  • 相关阅读:
    windows下的volatility取证分析与讲解
    AC自动机小结
    pytorch 龙良曲 自用笔记
    【荣耀内推】2023届荣耀校招开启啦
    【服务器数据恢复】HP StorageWorks系列服务器RAID5两块盘离线的数据恢复
    RSTP详解:对比STP,到底改进了什么?
    计算机毕业设计Python+djang的新生入学管理系统(源码+系统+mysql数据库+Lw文档)
    报错Error in nextTick: “TypeError: undefined is not iterable
    vue 把echarts封装成一个方法 并且从后端读取数据 +转换数据格式 =动态echarts 联动echarts表
    【Ubuntu】100 系统字体安装和更改
  • 原文地址:https://blog.csdn.net/weixin_44226181/article/details/126134269