CV&NLP基础1之Numpy学习

文章目录

  • Numpy数组处理库
    • 导入numpy库并取别名为np
    • 查看numpy库里提供了哪些东西
    • 补充说明jupyer的一个功能
    • 使用numpy的随机函数随机产生数组
      • numpy.random.rand()
      • numpy.random.randn() —— 重要
      • numpy.random.randint()
      • 生成[0,1)之间的浮点数
      • numpy.random.choice()
      • numpy.random.seed()
      • numpy.zeros()
      • 数组相乘numpy.dot()
      • numpy.arange() —— 重要
  • 数组的广播
  • 数组类型的特点
    • 修改数组形状numpy.reshape() —— 非常重要
    • 使用函数list()强制将数组转换为列表
    • 使用.ndim查看数组的维度
    • 使用.size查看数组里面元素个数
  • 类型转换(重点)
    • 使用numpy.array()将列表转换为数组
    • numpy.astype()
  • 数组切片

Numpy数组处理库

导入numpy库并取别名为np

import numpy as np

查看numpy库里提供了哪些东西

dir(np)或help(np)

补充说明jupyer的一个功能

将光标放在函数上,按shift+tab可以调出函数说明:
CV&NLP基础1之Numpy学习_第1张图片

使用numpy的随机函数随机产生数组

numpy.random.rand()

numpy.random.rand(d0,d1,…,dn)

  • rand函数根据给定维度生成[0,1)之间的数据,包含0,不包含1
  • dn表示维度
  • 返回值为指定维度的array

例:
CV&NLP基础1之Numpy学习_第2张图片

numpy.random.randn() —— 重要

numpy.random.randn(d0,d1,…,dn)

  • randn函数返回一个或一组样本,具有标准正态分布。

  • dn表示维度

  • 返回值为指定维度的array

  • 通过.shape可以查看生成的数组的构造

  • 通过.ndim查看数组的维度(也可以理解为“轴”的个数)

  • 通过.size查看数组包含的元素个数

  • .argmax: 返回指定轴的最大值的索引(下标)。二维数组中,参数“0”代表列,参数“1”代表行
    CV&NLP基础1之Numpy学习_第3张图片
    解释一下为什么使用.argmax(axis=0)后,输出array([1, 1, 0]) ?
    .argmax返回指定轴的最大值的索引(下标)二维数组中,参数“0”代表列,参数“1”代表行。
    使用.argmax(0)取出列的最大值的索引:
    生成的三行三列数组arr3的第一列是:0.78650488,1.30572907,-0.49828544,其中1.30572907最大,它的索引为1。
    生成的三行三列数组arr3的第二列是:0.38190384,1.60970205,-2.00096618,其中1.60970205最大,它的索引为1。
    生成的三行三列数组arr3的第三列是:1.145984,-0.2094228,-0.85838297,其中1.145984最大,它的索引为0。

同理,使用.argmax(axis=1)取出行的最大值的索引:
在这里插入图片描述

numpy.random.randint()

numpy.random.randint(low, high=None, size=None, dtype=numpy.int32)

  • 返回随机整数,范围区间为[low,high),包含low,不包含high
  • 参数:low为最小值,high为最大值,size为数组维度大小,dtype为数据类型,默认的数据类型是np.int
  • high没有填写时,默认生成随机数的范围是[0,low)

CV&NLP基础1之Numpy学习_第4张图片

生成[0,1)之间的浮点数

  • numpy.random.random_sample(size=None)
  • numpy.random.random(size=None)
  • numpy.random.ranf(size=None)
  • numpy.random.sample(size=None)

CV&NLP基础1之Numpy学习_第5张图片

numpy.random.choice()

numpy.random.choice(a, size=None, replace=True, p=None)

  • 从给定的一维数组中生成随机数
  • 参数: a为一维数组类似数据或整数;size为数组维度;p为数组中的数据出现的概率
  • a为整数时,对应的一维数组为np.arange(a)
    CV&NLP基础1之Numpy学习_第6张图片
  • 参数p的长度与参数a的长度需要一致;
  • 参数p为概率,p里的数据之和应为1
    在这里插入图片描述

numpy.random.seed()

  • np.random.seed()的作用:使得随机数据可预测。
  • 当我们设置相同的seed,每次生成的随机数相同。如果不设置seed,则每次会生成不同的随机数
    CV&NLP基础1之Numpy学习_第7张图片

numpy.zeros()

用于生成全0数组,可以用dtype形参指定变量类型

例: 生成三行四列的全零数组,且类型为float32
在这里插入图片描述

数组相乘numpy.dot()

CV&NLP基础1之Numpy学习_第8张图片

numpy.arange() —— 重要

numpy 库中的使用 arange 函数创建数值范围并返回 ndarray(n-dimensional array,n维数组的意思) 对象,函数格式如下:

numpy.arange(start, stop, step, dtype)

根据 start 与 stop 指定的范围以及 step 设定的步长,生成一个 ndarray。


数组的广播

将一个数组乘10,会将里面所有数乘10

CV&NLP基础1之Numpy学习_第9张图片

数组加一个数字,每个元素都会加上这个数字

CV&NLP基础1之Numpy学习_第10张图片

若arr2是4行6列的数组,arr3是1行6列的矩阵,用arr2 + arr3 是arr2的每行加上arr3对应元素

CV&NLP基础1之Numpy学习_第11张图片

数组类型的特点

  • 有自己的shape(形状)
  • 有数据类型(dtype), 如:dtype=numpy.int32; dtype=numpy.float32
  • 可以修改数组中元素的值

修改数组形状numpy.reshape() —— 非常重要

  1. 预备工作,先生成一个数组对象:
arr5 = np.arange(0, 24, dtype=np.int32)
arr5

在这里插入图片描述

  1. 将数组转换成三行八列的数组:
arr5.reshape(3, 8)

在这里插入图片描述

  1. 将数组转换成四行六列的数组:
arr5.reshape(4, 6)

在这里插入图片描述

  1. 通过索引找到修改过shape的数组的第一个元素(注意与列表索引的区别,数组索引稍微简便,少了些括号):
    CV&NLP基础1之Numpy学习_第12张图片

  2. 补充列表中的索引元素:
    CV&NLP基础1之Numpy学习_第13张图片

  3. 修改数组中的元素:
    CV&NLP基础1之Numpy学习_第14张图片
    注意,使用reshape函数时,不会创建副本。例如,这里修改了arr6的元素,但是也修改了arr5的元素,arr5和arr6指向同一个元素,没有创建副本,如下图:

CV&NLP基础1之Numpy学习_第15张图片

  1. 使用copy函数,创建副本
arr6 = arr5.copy()

使用函数list()强制将数组转换为列表

使用函数list()强制将三行四列数组转换为列表,其中的每个元素仍是数组类型:

使用.ndim查看数组的维度

也可以理解成数组的轴的个数。
例: arr6为三行四列的数组
CV&NLP基础1之Numpy学习_第16张图片

使用.size查看数组里面元素个数

CV&NLP基础1之Numpy学习_第17张图片

类型转换(重点)

使用numpy.array()将列表转换为数组

注意看注释,涉及type()函数、dtype属性的使用

CV&NLP基础1之Numpy学习_第18张图片

numpy.astype()

通过查看函数说明,可知astype()可以创建原数组的副本,并改变数组中元素的类型

CV&NLP基础1之Numpy学习_第19张图片
例:

使用astype()函数后,通过arr8中的元素查看是否是arr7的副本:
CV&NLP基础1之Numpy学习_第20张图片

数组切片

数组切片是原始数据的视图,也就是不会创造副本。注意这与列表切片的区别。


高维数组切片:
例1:

例2:
在这里插入图片描述

你可能感兴趣的:(CV&NLP学习,#,———基础入门系列,numpy)