CV&NLP基础1之Numpy学习

Numpy数组处理库

导入numpy库并取别名为np

import numpy as np

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

dir(np)或help(np)

补充说明jupyer的一个功能

将光标放在函数上,按shift+tab可以调出函数说明:
在这里插入图片描述

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

numpy.random.rand()

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

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

例:
在这里插入图片描述

numpy.random.randn() —— 重要

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

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

  • dn表示维度

  • 返回值为指定维度的array

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

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

  • 通过.size查看数组包含的元素个数
    在这里插入图片描述

  • .argmax: 返回指定轴的最大值的索引(下标)。二维数组中,参数“0”代表列,参数“1”代表行
    在这里插入图片描述
    解释一下为什么使用.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)

在这里插入图片描述

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

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

在这里插入图片描述

numpy.random.choice()

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

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

numpy.random.seed()

  • np.random.seed()的作用:使得随机数据可预测。
  • 当我们设置相同的seed,每次生成的随机数相同。如果不设置seed,则每次会生成不同的随机数
    在这里插入图片描述

numpy.zeros()

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

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

数组相乘numpy.dot()

在这里插入图片描述

numpy.arange() —— 重要

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

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

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

在这里插入图片描述
请添加图片描述

数组的广播

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

数组类型的特点

  • 有自己的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的数组的第一个元素(注意与列表索引的区别,数组索引稍微简便,少了些括号):
    在这里插入图片描述

  2. 补充列表中的索引元素:
    在这里插入图片描述

  3. 修改数组中的元素:
    在这里插入图片描述
    注意,使用reshape函数时,不会创建副本。例如,这里修改了arr6的元素,但是也修改了arr5的元素,arr5和arr6指向同一个元素,没有创建副本,如下图:

在这里插入图片描述

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

在这里插入图片描述

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

使用函数list()强制将三行四列数组转换为列表,其中的每个元素仍是数组类型:
在这里插入图片描述

使用.ndim查看数组的维度

也可以理解成数组的轴的个数。
例: arr6为三行四列的数组
在这里插入图片描述

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

在这里插入图片描述

类型转换(重点)

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

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

在这里插入图片描述

numpy.astype()

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

在这里插入图片描述
例:
在这里插入图片描述
使用astype()函数后,通过arr8中的元素查看是否是arr7的副本:
在这里插入图片描述

数组切片

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

在这里插入图片描述
高维数组切片:
例1:
在这里插入图片描述
例2:
在这里插入图片描述在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值