2020.7.21 Numpy 基础2

发布于 2020-07-21  9 次阅读




1.学习内容

  • 均匀分布生成

    • np.random.uniform()
      • low high size
  • 正态分布

    • 数据两边低,中间稿,都可以算正态分布图
    • 均值,方差
    • 均值:图形的左右(距离原点0)位置
    • 方差:图的高低胖瘦
      • 值越小,图形越高,数据越集中
      • 值越大,图形越矮胖,数据越分散
    • 正态分布创建(高斯Gaussian 分布)

      • np.random.randn()

        • 参数是多少,就带代表随机生成多少个元素
        • 几个参数就是几维数组
      • np.random.normal(loc=0.0,scale=1.0,size=None)

        • loc:float
          此概率分布的均值(对应着整个分布的中心centre)
        • scale:float
          此概率分布的标准差(对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高)
        • size:int or tuple of ints
          输出的shape,默认为None,只输出一个值
      • np.random.standard_normal(size=None)

        • 跟randn一样,也是返回标准正态分布的数组,不同的是它的shape由size参数指定,对于多维数组,size必须是元组形式;
      • https://www.cnblogs.com/luckyboy314/p/11715643.html
    • 数组索引、切片

      • 直接索引 2:2 就是2行连续两个数据
      • 先对行索引,在对列索引
      • 高纬度数组从宏观到微观(从外层选,在到内层)
    • 形状修改

      • 对象.reshape(newshape,order=‘B’)
        • newshape新的格式--整数或整数数组
          • 新的形状应该与原来的形状兼容,
          • 行数和列数相乘后等于a中元素的数量
        • order:
          • 可选范围为{‘C’, ‘F’, ‘A’}
        • 不改变数据内容的情况下,改变一个数组的格式(形状)
        • 不进行行列互换,产生新的变量
        • https://www.jianshu.com/p/fc2fe026f002
      • np.resize(对象,shape)
        • 修改对象的值,按照shape形状
        • 进行行列互换,对原值进行更改
      • 对象.T
        • 进行行列互换
    • 类型修改

      • 对象.astype(dtype) int64
    • 数组的去重

      • np.unique(arr)
  • ndarray 运算

    • ndarray索引支持数组
      • ndarray[[1,2]]
    • 逻辑运算 (大于 小于 等等)
      • ndarray > 1 满足要求为True 不满足为False
      • ndarray[ndaaray > 1] = 1 满足要求直接复制
    • 通用判断函数
      • np.all() 满足所有要求 返回True
      • np.any() 满足一个要求 返回True
    • 三元运算符
      • np.where() 满足要求赋值第一个,不满足赋值第二个
      • np.where(ndarray>1(条件),1,0)
        • np.logical_and() 两个条件
        • np.logical_or() 任意一个条件
    • 统一运算 axis 0 列 1 行(axis不一定都这样)
      • 直接使用ndarray对象调用
      • min()
      • max()
      • midian() 中位值
      • mean() 均值
      • std() 标准差
      • var() 方差
      • argmax() 第一个最大值
      • argmin() 第一个最小值下标
  • 矩阵

    • 1.矩阵和向量
      • 矩阵:二维数组
      • 向量:一维数组
    • 2.加法和标量乘法
      • 加法:对应位相加(多维数组个数相同)
      • 乘法:标量和每个位置的元素相乘
    • 3.矩阵向量 矩阵(乘法)
      • [M行,N列]*[N行,L列]=[M行,L列]
    • 4.矩阵乘法性质
      • 满足结合律,不满足交换律
    • 5.单位矩阵
      • 对角线为1,其他位置为0的矩阵
    • 6.逆矩阵
      • 矩阵A*矩阵B = 单位矩阵‘
      • 那么A和B互为逆矩阵
    • 7.转置
      • 行列互换
  • 数组间运算

    • 1.数组和数字是直接可以进行运算
    • 2.数组和数组(形状相同,形状不同)
      • 当两个数组的形状并不相同的时候,我们可以通过扩展数组的方法来实现相加、相减、相乘等操作,这种机制叫做广播(broadcasting)。
      • 需要满足广播机制
  • 广播机制

    • 广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式
    • 即满足 a.shape == b.shape,那么 a*b 的结果就是 a 与 b 数组对应位相乘
    • 当运算中的 2 个数组的形状不同时,numpy 将自动触发广播机制
    • import numpy as np
      
      a = np.array([[ 0, 0, 0],
                 [10,10,10],
                 [20,20,20],
                 [30,30,30]])
      b = np.array([1,2,3])
      print(a + b)

    • img
    • 广播的规则
      • 像最长的数组看齐(做运算)
      • 输入数组,长度相同,或者长度为1,
        • 可以计算(5,5)(5,)可以运算
        • 可以计算(5,5)(5,2)不可以运算
  • 矩阵乘法api

    • np.dot 点乘
    • np.matmul 矩阵相乘
    • 注意:
      • 两者之间在进行矩阵相乘没有区别
      • dot支持矩阵和数字相乘

2.扩展延伸知识

  • jupyter notebook 关闭out

    • 关闭Out 在out左侧双击
  • 标准差公式

    • σ=1Ni=1N(xiμ)2

  • 单位矩阵

    • 左上角开始到右下角都是1,其余全为0,就是单位矩阵
    • img
  • 逆矩阵

    *

  • 离散程度

    • 1、通过对随机变量取值之间离散程度的测定,可以反映各个观测个体之间的差异大小,从而也就可以反映分布中心的指标对各个观测变量值代表性的高低。

      2、通过对随机变量取值之间离散程度的测定,可以反映随机变量次数分布密度曲线的瘦俏或矮胖程度。

    • 三个知识点:极差,平均差,标准差,
  • 正态分布

    • 中间高,两边低
    • img
  • 矩阵运算

    • 0.基础导读
      • 行数:横着的是行
      • 列数:竖着的是列
      • 单位矩阵:单位矩阵是一个n×n矩阵,从左到右的对角线上的元素是1,其余元素都为0
      • 逆矩阵:矩阵A的逆矩阵记作A-1, A A-1=A-1A= I,I是单位矩阵。
      • 对称矩阵: 如果一个矩阵转置后等于原矩阵,那么这个矩阵称为对称矩阵。
    • 1.一个数和矩阵相乘,
      • 数字和每一个矩阵里的元素相乘
    • 2.两个相同形状矩阵做加减
      • 就是每位数字做运算
      • 简言之,两个矩阵相加减,即它们相同位置的元素相加减!
    • 3.矩阵与矩阵相乘
      • 两个矩阵AB相乘,需要满足A的列数等于B的行数。
      • img
      • 矩阵乘法不满足交换律,但仍然满足结合律和分配律:
      • img
    • https://www.cnblogs.com/bigmonkey/p/7646005.html 写的通俗
    • https://blog.csdn.net/qq_27245709/article/details/74332467
  • numpy数组内存
    • numpy内存地址

3.灵感代办

  • yaml 使用
  • picgo更新
  • 服务器的图片

4.复习内容

5.学习成果&问题


Ares个人进阶之路