IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> numpy基础教程 -> 正文阅读

[Python知识库]numpy基础教程

numpy基础教程

numpy基本概念

  • nympy是一个在python中做科学计算的基础库,主要用于数值计算。也是大部分python科学计算库的基础库,多用于大型、多维数组上的执行数值运算
  • 特点:
    • 快速,底层用c编写,并且释放了GIL;
    • 方便;
    • 科学计算的基础库

numpy基础

  • 创建数组

    • import numpy as np
      # 方法一
      a = np.array([1, 2, 3, 4, 5])
      # 方法二
      b = np.array(range(1,6))
      # 方法三
      c = np.arange(1, 6)
      
  • numpy数组的类型

    • type(a)
      numpy.ndarray
      
  • numpy数据类型

    • 类型类型代码说明
      int8, uint8i1, u1有符号和无符号的8位(1个字节)整形
      int16, uint16i2, u2有符号和无符号的16位(2个字节)整形
      int32, uint32i4, u4有符号和无符号的32位(4个字节)整形
      int64, uint64i8, u8有符号和无符号的64位(8个字节)整形
      float16f2半精度浮点数
      float32f4或f标准的单精度浮点数,与c的float兼容
      float64f8或d标准的双精度浮点数,与c的double和python的float对象兼容
      float128f16或g扩展精度浮点数
      complex64, complex128c8, c16分别用两个32位、64位或128位浮点数表示的复数
      complex256c32复数
      bool存储True和False的布尔类型
  • 数据类型的操作

    • 指定创建的数组的数据类型

    • a = np.array([1, 2, 3], dtype=np.bool)  # 或者使用dtype='?'
      
    • 修改数组的数据类型

    • a.astype("i1")  # 或者使用a.astype(np.int8)
      
    • 修改小数点的小数位数

    • np.round(b, 2)  # 保留两个小数点位数
      
  • 数组的形状

    • 查看数组的形状

    • a.shape
      
    • 修改数组的形状:修改后得到新数组,原数组不改变。

    • a.reshape((index, column))
      
    • 数组转化为1维数组

    • b.flatten()
      # 注意 b.reshape((1, 12))仍然是二位数组
      
  • 数组和数的计算(a为数组)

    • 加减法(a+1):数组中的每一项都加上常数项。
    • 乘除法(a*3):数组中的每一项都乘以常数项。
  • 数组和数组的计算(a和b满足条件才可以进行计算)

    • 加减法(a+b):两个数组对应位置数字相加减。
    • 乘除法(a*b):两个数组相对应位置数字相乘除。
  • 广播原则

    • 如果两个数组的后院维度(即从末尾开始计算的维度)的轴长度相符或其中一方的长度为 1,则认为它们是广播兼容的。广播会在缺失和(或)长度为一的维度上进行
    • 轴在numpy中可以理解为方向,使用0,1,2,…数字表示,shape(2, 2)有0轴和1轴,对应三维数组shape(2, 2,3), 有0, 1, 2轴。
  • numpy读取数据

    • np.loadtxt(fname, dtype=np.float, delimiter=None, skiprows=0, usercols=None, unpack=False)
      
      • 参数解释
        fname文件、字符串或产生器,可以是.gz或bz2压缩文件
        dtype数据类型,可选。以什么数据类型读入数组中,默认为np.float
        delimiter分割字符串,默认为任何空格
        skiprows跳过前x行,一般跳过表头行
        usecols读取指定的列,索引,元素类型
        unpack如果为True,数据转置;False,原始数据
  • numpy数组转置

    • # t为数组别名
      # 方法一
      t.transpose()
      # 方法二
      t.T
      # 方法三:交换轴
      t.swapaxes(1, 0)  # 二位数组
      
  • numpy数组索引和切片

    • # t为数组别名
      # 取一行
      t[index]
      # 取一列
      t[:, column]
      # 取连续多行
      t[index1:index2]
      # 取连续多列
      t[:, column1:column2]
      # 取不连续多行
      t[[index1, index2, ...], :]
      # 取不连续多列
      t[:, [column1, column2, ...]]
      
  • numpy数组中数值的修改

    • # t为数组别名
      # 方法一:修改条件为固定值
      t[index1:index2, :] = 0
      # 方法二:修改条件为单个条件:小于10的修改为0
      t[t<10] = 0
      # 方法三:修改条件为单个条件,但给多个值:小于10修改为0, 大于10修改为10
      np.where(t<10, 0, 10)
      # 方法四:修改条件为多个条件:小于10替换为10,大于20替换为20
      t.clip(10, 20)
      
  • numpy中特殊数值

    • np.nan
      • nan(NAN, Nan):not a nmber。
      • 出现情况:读取文件为float时,如果有缺失,就会出现nan。
      • np.nan特点:
        • 两个nan是不相等的(np.nan != np.nan);
        • nan和任何数值计算都为nan;
        • 通过np.isnan(a)来判断。
      • 处理方法:
        • 缺失值过多,直接删除某行或者某列;
        • 把缺失值替换为均值或者中值。
    • np.inf
      • inf(-inf, inf):表示无穷。
      • 出现情况:一个数字除以0。python中直接报错,numpy为inf

numpy常用方法

  • 数组拼接

    • 竖直拼接

      • # t1, t2为列数相同的数组
        np.vstack(t1, t2)  # 列数不变,行数为t1, t2的和
        
    • 水平拼接

      • # t1, t2为行数相同数组
        np.hstack(t1, t2)  # 行数不变,列数为t1, t2的和
        
  • 行列数据交换

    • 行交换

      • # t为数组
        t[[1,2], :] = t[[2,1], :]
        
    • 列交换

      • # t为数组
        t[:, [1,2]] = t[:, [2,1]]
        
  • 获取最大值最小值位置

    • # t为数组
      np.argmax(t, axis=0)  # 0轴最大值位置
      np.argmin(t, axis=0)  # 0轴上最小值位置
      
  • 创建一个全0数组

    • np.zero(shape) # shape为一个数组的形状,元组表示
      
  • 创建一个全1数组

    • np.ones(shape)  # shape为一个数组的形状,元组表示
      
  • 创建对角线为1的方阵

    • np.eye(n)  # n表示方阵的阶
      
  • 随机数

    • 参数解释
      np.rand(d0, d1, …,dn)创建d0-dn维度的均匀分布的随机数组,浮点数,范围从0-1
      np.randn(d0, d1, …,dn)创建d0-dn维度的标准正态分布的随机数组,浮点数,平均数为0,标准差为1
      np.randint(low, high,(shape))从给定上下限范围内选取随机整数,范围为low-high,形状为shape
      np.uniform(low, high,(size))产生具有均匀分布的数组,low为起始值,high为结束值,size为形状
      np.normal(loc, scale,(size))从指定正态分布中随机抽取样本,均值是loc,标准差为scale,形状为size
      np.seed(s)随机数种子,s为给定的种子值

numpy常用统计方法

  • 求和

    • # t为数组
      t.sum(axis=None) # 指定轴,不指定轴是所有值的和
      
  • 均值

    • # t为数组
      t.mean(axis=None)  # 指定轴,不指定轴则求所有值的均值
      
  • 中值

    • # t为数组
      np.median(t, axis=None)  # 指定轴,不指定轴则求所有值的中位数
      
  • 极值

    • 极值表示最大值和最小值之差。

    • # t为数组
      np.ptp(axis=None)  # 指定轴,不指定轴则求所有值的中位数
      
  • 最大值

    • # t为数组
      t.max(axis=None)  # 指定轴,不指定轴则求所有值的最大值
      
  • 最小值

    • # t为数组
      t.min(axis=None)  # 指定轴,不指定轴则求所有值的最小值
      
  • 标准差

    • 标准差反应大部分值和其平均值之间差异大小,用来表示数据波动情况。

    • # t为数组
      t.std(axis=None)  # 指定轴,不指定轴则求所有值的标准差
      
  •   # t为数组
      t.max(axis=None)  # 指定轴,不指定轴则求所有值的最大值
    
  • 最小值

    • # t为数组
      t.min(axis=None)  # 指定轴,不指定轴则求所有值的最小值
      
  • 标准差

    • 标准差反应大部分值和其平均值之间差异大小,用来表示数据波动情况。

    • # t为数组
      t.std(axis=None)  # 指定轴,不指定轴则求所有值的标准差
      

参考资料

[1] 黑马程序员的视频课程。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章           查看所有文章
加:2022-03-10 22:27:16  更:2022-03-10 22:30:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 21:52:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码