机器学习:Jupyter Notebook中numpy的使用

2023-11-05

一、Jupyter Notebook的魔法命令

 # 模块/方法 + ?或者help(模块/方法):查看模块/方法的解释文档;

 1)%run

 # 机械学习中主要应用两个魔法命令:%run、%timeit

 # 魔法命令格式:% + 命令

 # %run:将模块引用并在Jupyter Notebook中执行(这是与import的区别),模块被引用后,其内部的函数可以在Jupyter Notebook中直接被引用;

 # 格式:%run + 文件的地址 + 文件名

 

 2)%timeit
  1. 测试代码的性能,后面只能接一条语句/代码块,得出运行此条语句或代码块所用的时间;
  2. %timeit + 一条语句:测试该条语句运行所用时间;
  3. %%timeit:表示测试在该单元格内的全部代码运行时所用时间;
  4. %timeit、%%timeit,一般是将代码运行多遍,然后去取执行最快的几次的平均值;
  5. 如果%timeit和%%timeit后面的代码,每次运行的效率不同,则测量的结果又偏差;
  6. %time,返回只将代码运行一遍所用时间;但这样的测试结果不稳定,每次测得结果差异很大,但对于一次测试用时较长的代码/算法,测试差异可以忽略;

 

 3)其它
  • 命令 + ?:查看命令的文档;
  • 可以通过%lsmagic查看素有的魔法命令;
  • 机器学习算法中,scikit-learn中的函数封装的都是接收一个Numpy的矩阵,通常使用Pandas对数据进行预处理,将Pandas数据转换为Numpy的矩阵,再送给机械学习的算法;

 

二、numpy.array基础

 1)numpy.array的基础
  1. python的list数据非常灵活,运行效率较低,因为系统需要检测其中所有数据的类型;
  2. Python中的array模块,可以限定只存储一种数据类型:
import array
arr = array.array('i', [i for i in range(10)])
# 其中'i'表示数据类型为整数
print(type(arr[5]))
# 5
arr[5] = 'a'
# 报错,arr内的数据只能赋值为整数
  1. Python的array模块缺陷:1)中没有将数据看成向量或矩阵,因此也没有向量和矩阵相关的运算;2)只有一种数据类型,不够灵活使用;
  2. numpy模块的array方法,可以进行向量和矩阵的运算;
  3. numpy模块的array方法创建的数据,只能是整数,若将小数赋值给array方法创建的数据时,会自动转换为整数;
  4. 机械学习中所操作的大多数数值为浮点数;

 

 2)np.array的创建
  A、创建全0数组
  1. np.zeros(10):默认为float64类型的一维全0数组;
    array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
  2. np.zeros(10, dtype = int):数据类型为int的一维全0数组;
    array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
  3. np.zeros((3, 5)):默认fioat64类型的3行5列的矩阵;
    array([[0., 0., 0., 0., 0.],
           [0., 0., 0., 0., 0.],
           [0., 0., 0., 0., 0.]])
  4. np.zeros(shape = (3, 5), dtype = int)或者np.zeros( dtype = int, shape = (3, 5)):类型为int的3行5列的矩阵;
    array([[0, 0, 0, 0, 0],
           [0, 0, 0, 0, 0],
           [0, 0, 0, 0, 0]])
  
  B、创建全1的数组
  • np.ones(),操作方法同理全0矩阵的创建;
  
  C、创建所有值都相同的数组
  1. np.full((3, 5), 666)或者np.full(shape = (3, 5), fill_value = 666)或者np.full(fill_value = 666, shape = (3, 5)):默认为int;
    array([[666, 666, 666, 666, 666],
           [666, 666, 666, 666, 666],
           [666, 666, 666, 666, 666]])
  2. np.full(10, 666)或者np.full(shape = 10, fill_value = 666)或者np.full(fill_value = 666, shape = 10):
    array([666, 666, 666, 666, 666, 666, 666, 666, 666, 666])
  
  D、numpy中arange的用法:参数的用法与python中range的参数用法一样
  1. np.arange(0, 10):默认步长为1;
    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
  2. np.arange(10):默认起始值为0,默认步长为1;
    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
  3. np.arange(0, 10, 2):取值间隔为2;
    array([0, 2, 4, 6, 8])
  4. np.arange(0, 1, 0.2):步长可以为小数,0.2,而python中的range的参数,步长不能为小数;
    rray([0. , 0.2, 0.4, 0.6, 0.8])
  5. range()生成列表,np.arange()生成数组;
    
  E、numpy中linspace的用法,与arange类似
  • np.linspace(0, 20, 10):将0~20间的数等分10个点,首尾分别是0和20,此处10不是步长,而是将区间等分的点数(包含首尾数值);
    array([ 0.        ,  2.22222222,  4.44444444,  6.66666667,  8.88888889,
           11.11111111, 13.33333333, 15.55555556, 17.77777778, 20.        ])
  
  F、numpy中random的用法:生产随机int数random.randint()
  • 区间为前闭后开:[m,n);
  • 随机生成的数据给算法时,运行的结果不一致,导致调试困难;
  • 计算机中,所有的随机数都是伪随机数,都是随机算法实现的;推动算法生产随机数的是随机种子:同一个随机种子生产的随机数是一定的,再次调用该种子时可以得到上一次该种子生产的随机数;
  1. np.random.randint(0, 10):从0~10间随机生产一个z
    5
  2. np.random.randint(0, 10, 5):从0~10间随机生成5个int类型的数;
    array([8, 6, 3, 3, 6])
  3. np.random.randint(4, 8, size = 10):一般标出size = 10,提高代码可读性;
    array([6, 5, 6, 7, 4, 7, 7, 6, 5, 5])
  4. np.random.randint(4, 8, size = (3, 5)):从[4, 8)中,随机生成3行5列的矩阵;
    array([[7, 7, 5, 5, 5],
           [5, 7, 5, 7, 4],
           [6, 6, 4, 6, 5]])
  5. 随机种子的使用
    # Jupyter Notebook中实现的代码
    np.random.seed(666)
    np.random.randint(4, 8, size = (3, 5))
    # 设定随机种子,并生成随机数据
    np.random.seed(666)
    np.random.randint(4, 8, size = (3, 5))
    # 再次调用该种子,并再次生成原来格式的随机数据,所得到的数据与第一次随机生成的数据相同;

 

  G、numpy中random的使用:生成随机float数random.random()
  • 生成的float数为0~1的随机数
  • random.random()的操作格式与random.randint()一样;
    
  H、numpy中random的使用:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习:Jupyter Notebook中numpy的使用 的相关文章

随机推荐

  • Spring Boot 学习研究笔记(十) -SpringBoot JAP 踩坑总结

    SpringBoot JAP 踩坑总结 一 JSON 字段映射处理流程 1 实现类型转换接口 package com call show common utils import com fasterxml jackson core Json
  • 最简单的鼠标放置悬停显示省略的内容,为标签的title赋值

    翻了一下午没看到能看懂的代码 对于我这个后台开发实在天书一般 原始需求为 内容过长显示为省略号 鼠标放置时再将全部内容悬浮展示出来 内容是放置在p标签中的 设置一下style即可 注意这四个属性缺一不可 p style width 100
  • 雪花算法记录

    引子 伴随着业务的日渐庞大 单库单表的数据库可能无法支持业务的读写 需要对数据库进行分库分表 原来数据库中 通常使用自增id的方式生成主键 分库分表之后 如果仍然采用原来的方式 在多个表之间主键会发生重复 分库分表后 如何保证多张表中的 i
  • webpack5+mockjs

    上篇提到升级 vue cli 5 0 1后 发现webpack 是v5 之前配置devServer after异常 于是认真看了一下文档 webpack v5文档 v5的devServer去掉了get和after 添加了setupMiddl
  • 日期的生成

    获取系统当前时间 日期类型为timestamp 日期格式为2010 11 04 16 19 42 方法1 Timestamp d new Timestamp System currentTimeMillis 方法2 Date date ne
  • 实对称矩阵的性质_今天行列式的矩阵是一个实对称矩阵, 主对角线是同一个元素, 其余位置是另一元素。该矩阵的行列式有相当好的性质, 同学们要加以记忆...

    行列式计算 5 01 前言 1 今天我们继续讨论特殊行列式的计算思路与方法 今天这组题的行列式的矩阵是一个实对称矩阵 主对角线是同一个元素 其余位置是另一元素 该矩阵的行列式有相当好的性质 需要同学们加以记忆 2 第1题 第一个行列式的计算
  • MyBatis - 14 - 分页插件的配置及使用

    文章目录 1 分页插件配置 1 在pom xml中添加依赖 2 在MyBatis的核心配置文件中配置插件 2 分页插件的使用 回顾Mysql分页功能 MyBatis分页插件的使用 测试显示第1页 每页显示4条数据 打印page对象 测试获取
  • java Collection和Map接口的区别

    一 Collection接口 Collection是最基本的集合接口 一个Collection代表一组Object 即Collection的元素 Elements 一些Collection允许相同的元素而另一些不行 一些能排序而另一些不行
  • 荔枝派Zero(全志V3S)驱动开发之hello驱动程序

    文章目录 前言 一 设备驱动分类 二 字符设备驱动简介 三 字符设备驱动开发 1 APP打开的文件在内核中如何表示 2 编写驱动程序的步骤 3 hello 驱动程序编写 lt 1 gt 试验程序编写 lt 2 gt 测试程序编写 lt 3
  • Maven的Pom文件中的隐式依赖导致Jar包冲突的问题

    分享一下我老师大神的人工智能教程 http blog csdn net jiangjunshow 也欢迎大家转载本篇文章 分享知识 造福人民 实现我们中华民族伟大复兴 在一次的maven项目中遇到这样一个bug 编译器没有报什么错 但无法编
  • python爬取boss直聘招聘信息_python学习之路-爬取boss直聘的岗位信息

    背景 想了解从事python相关岗位需要具备什么技能 于是就想从招聘网站上的职位需求入手 把信息获取下来后 生成词云 这样就能很直观的看出来哪些技能是python相关岗位需要具备的了 技术概览 scrapy request wordclou
  • 面试官:说一下单点登录的几种实现方式

    Java面试笔试面经 Java技术每天学习一点 Java面试 关注不迷路 作者 张永恒 来源 https www cnblogs com yonghengzh p 13712729 html 在 B S 系统中 登录功能通常都是基于Cook
  • centos ip 没有显示

    进入 cd etc sysconfig network scripts 编辑网卡设置 我的网卡默认是ifcfg ens33 有的网卡默认是ifcfg eth0 执行 vi ifcfg ens33 将onboot no 改为onboot ye
  • MPU6500驱动调试笔记(STM32F407+SPI)

    一 问题背景 本来最开始实验室使用MPU6050芯片 采集陀螺仪原始数据做生理信号采集 但算法发现用IIC接口采样率 200hz 达不到要求 故寻找同类型支持SPI协议的芯片去替代 发现了这块MPU6500 还便宜 就用起来 在读写寄存器费
  • ST 电机控制工作台帮助文档翻译 之 STM32F3x 的 OCP 和 OVP(使用嵌入式模拟的过压保护(仅限 STM32F3x))

    ST 电机控制工作台 使用嵌入式模拟的过压保护 仅限 STM32F3x 图5显示了可以使用 STM32F30x 的内部资源实现的过压保护网络的基本实现 图5 过压保护网络 原理类似于 过流保护
  • linux-目录相关作用

    文章来自狂神老师的笔记 同时会有自己的体会 狂神老师课程的链接 https www bilibili com video BV187411y7hF from search seid 10463862828616102628 注意 linux
  • 基于SpringBoot的实习管理系统

    末尾获取源码 开发语言 Java Java开发工具 JDK1 8 后端框架 SpringBoot 前端 Vue HTML 数据库 MySQL5 7和Navicat管理工具结合 服务器 Tomcat8 5 开发软件 IDEA Eclipse
  • 一位技术主管的十年编程经验总结 .

    一位技术主管的十年编程经验总结 有天和朋友聊天 朋友是国内一家大型互联网企业的一位技术主管 朋友把他将近十年研发工作积累的心血总结成两点 这两点朋友刚一提出来我并没有马上明白 只是大约有这么一个概念 我还没达到朋友在技术领域的那种高度 不能
  • PAT乙级1041 考试座位号 (15 分)

    1041 考试座位号 15 分 一 问题描述 每个 PAT 考生在参加考试时都会被分配两个座位号 一个是试机座位 一个是考试座位 正常情况下 考生在入场时先得到试机座位号码 入座进入试机状态后 系统会显示该考生的考试座位号码 考试时考生需要
  • 机器学习:Jupyter Notebook中numpy的使用

    一 Jupyter Notebook的魔法命令 模块 方法 或者help 模块 方法 查看模块 方法的解释文档 1 run 机械学习中主要应用两个魔法命令 run timeit 魔法命令格式 命令 run 将模块引用并在Jupyter No