机器学习入门之numpy基础(二)

一、numpy队列

1.1、Python自带的队列

1、导入numpy

在这里插入图片描述

2、python.list
  • python队列内的元素类型是可变的,可以是字符串、数字、元组等Python支持的所有类型;不符合机器学习的基本要求。
    在这里插入图片描述
3、python.array
  • 使用array我们就可以创建单一类型元素的数组,如下图:当申明为i时就说明此数组只能为整型数字
    在这里插入图片描述
  • 机器学习为什么不使用python.arraypython.array没有把数据看成向量或者矩阵,同时也没有配置向量和矩阵相关的运算,所以在机器学习中使用python.array也不方便。

1.2、numpy.array基础

1、创建一个元素类型是整型数字的array数组

在这里插入图片描述

2、元素类型是整型数字的array也可以给他赋值浮点型数字
  • 如果赋值为浮点数,会默认取小数点之前的整数,最后整个数组的类型还是整型不变
    在这里插入图片描述
3、创建一个元素类型为浮点型的array数组
  • 只要初始化数组中有一个值为浮点值,整个array数组的类型就是float64
    在这里插入图片描述
  • 机器学习处理的数据通常是浮点类型的数字

二、numpy数组和矩阵

2.1、其它创建numpy.array的放法

1、使用zeros和ones方法创建数组
  • zeros方法默认创建浮点数数组:
    在这里插入图片描述
  • zeros方法创建整型数组
    在这里插入图片描述
  • zeros方法创建矩阵:shape和dtype可以省略不指明
    在这里插入图片描述
  • ones方法同理:创建的数值均为1
2、使用full方法创建指定数值的矩阵
  • 创建666的整型数组:full与前面介绍的两个方法不一样,如果fill_value的值为整型,则创建的数组或者矩阵的类型就是整型;如果fill_value的值为浮点数,则创建的数组或者矩阵的类型就是浮点型
    在这里插入图片描述
  • 创建666的浮点型数组
    在这里插入图片描述
  • 如果我们指定了full方法里面的dtype属性的值,则创建的矩阵或者数组的类型就和dtype中的保持一致
    在这里插入图片描述

2.2、arange和linspace

  • arange和linspace都只能生成一维数组,不支持shape属性
1、arange方法
  • 与python的range方法一样,遵循前闭后开原则,即数组取值包括起始值但是不包括结尾值;默认的取值间距1,默认的取值起始值0
    在这里插入图片描述
2、linspace方法
  • linspace不遵循前闭后开原则,而是遵循前闭后闭原则;即起始值和终止值均在所得数组中
  • 下图中的10代表等差取10个数;11代表等差取11个数
    在这里插入图片描述

2.3、random模块生成随机数

1、获取0到10之间的随机数组
  • random随机取值遵循前闭后开的原则,如下图随机数永远取不到10
    在这里插入图片描述
  • 验证random的前闭后开原则
    在这里插入图片描述
2、利用random创建一个随机矩阵

在这里插入图片描述

3、根据随机种子保存并获取上一次的随机取值结果
  • 如果两次调用的seed值相同,则他们生成的随机矩阵就是一样的
    在这里插入图片描述
4、获取浮点型随机数
  • randintrandom方法对比:
    1、randint生成的是整型数值,random生成的是浮点数;
    2、randint中只有一个数字时代表是生成0到该数字之间的随机数,但是random是获取的10个0到1之间的浮点数
    在这里插入图片描述
5、生成一个符合正态分布(均值为0方差为1)的随机数
  • 使用normal方法默认会生成一个符合正态分布的数据
    在这里插入图片描述

  • 生成一个平均值为5,方差为10的数
    在这里插入图片描述

  • 如下图是生成一个平均值为10,方差为100的矩阵
    在这里插入图片描述

  • normal也可以这样使用:loc是平均数,scale是方差,size是大小;它们均可省略不写
    在这里插入图片描述

  • numpy中random的其它用法:numpy中random模块的使用

三、numpy.array的基本操作

3.1、numpy.array基本属性

1、初始化一个一维数组和二维数组

在这里插入图片描述

2、基本属性
  • ndim:输出当前矩阵是几维数组,如x是一维数组打印就是1,X是二维数组打印的就是2.
    在这里插入图片描述
  • shape:x是一维数组就只打印出一维的元素个数;X是二维数组就打印出二维的元素个数
    在这里插入图片描述
  • size:打印出数组(矩阵)的大小
    在这里插入图片描述

3.2、numpy.array的数据访问

  • 基本的下标、切片访问等数据访问与python数组的数据访问相同
1、一维数组的下标、切片等数据访问
  • 下标获取单个元素
    在这里插入图片描述
  • 切片获取一段数据遵循前闭后开原则;当不指定起始值时默认为0从第一个数开始切片;当不指定结束值时默认截取至最后一个数。
    在这里插入图片描述
  • 切片配合步长使用:python数组切片还有第三个参数可以指定就是步长;如下步长为2就表示隔两个步长取一个数
    在这里插入图片描述
  • 逆向获取一段数组:步长为-1时就是逆向的访问数组;-2就是逆向的步长为2的取数组;但是切片起始值和终止值均有赋值并且步长为负数的话,起始值必须大于终止值,否则数组为空;步长为负数时,起始值为空,默认从最后一位数切片,终止值为空,默认切片到第一位数为止即终止值为0。也遵循前闭后开的原则
    在这里插入图片描述
2、二维数组的下标、切片、逆向等数据访问
  • 下标获取单个元素推荐X[1,3]的方式获取,X[1][3]方式有问题,后续会提到
    在这里插入图片描述

  • 使用[i][j]方式切片获取数据:我们本来是要获取前两行前三列的内容;但是结果却是把前两行所有值都打印出来了这是因为第一个[:2]将前两行的数值全部取出来了,[:3]是在已经处理过的数组上面再取前三行的所有数据,但是处理后的只有两行数据;所以得到的结果与我们预期的不同,所以numpy数组操作中推荐使用[i,j]
    在这里插入图片描述

  • 使用[i,j]方式切片获取一段数据遵循前闭后开原则
    在这里插入图片描述

  • 获取一行数组(行向量)
    在这里插入图片描述

3.3、矩阵与子矩阵的关系

1、初始化一个子矩阵
  • 修改subX中一个元素的值
    在这里插入图片描述
2、subX中值修改了是否会影响X呢?
  • X和subX是相互影响的,所以矩阵和其子矩阵事实上是同一个矩阵,相互影响,相互改变;自矩阵并不是说是一个新的矩阵了
    在这里插入图片描述
3、如何在一个矩阵的基础上将其子矩阵创建为一个新的矩阵,与原矩阵互不影响?
  • 使用copy()方法:可以看到subX中的元素改变并没有影响到X中的值
    在这里插入图片描述

3.4、reshape命令

1、将一维数组转换为二维的矩阵
  • reshape不会影响原来矩阵的数据结构
    在这里插入图片描述
2、将一维数组转换为二维数组:但是只有一维数据

在这里插入图片描述

3、将一维数组转为二维数组:五行,列自动计算

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值