Numpy基础知识小记

Numpy基础知识小记


Numpy的array以及创建方法和操作函数

array对象的背景

  • Numpy的核心数据结构,也叫做array就是数组,array对象可以是一维数组,也可以是多维数组;
  • Python的List也可以实现相同的功能,但是array比List的性能更好,包含大量的便捷函数;
  • Numpy成为事实上的Scipy、Pandas、Scikit-Learn、Tensorflow、PaddlePaddle等框架的“通用底层语言”
  • Numpy的array和Python的List的一个区别是,它的元素必须是同一种数据类型,比如都是int类型,这也是Numpy高性能的一个原因

array本身的属性

  • shape:返回一个元组(const的list),表示array的维度
  • ndim:一个数组,表示array的维度的数目
  • size:一个数字,表示array中所有数据元素的数目
  • dtype:array中元素的数据类型

创建array的方法

  • 从Python的列表List和嵌套列表创建array
  • 使用预定函数arange、ones/ones_like、zeros/zeros_like、empty/empty_like、full/full_like、eye等函数创建
  • 生成随机数的np.random模块构建

array本身支持的大量操作和函数

  • 直接主元素加减乘除等算术操作(python原生代码中是一个一个开平方开立方计算,但是numpy可以对整个数组直接进行计算,就相当于把数组压缩成了一个元素!!)
  • 更好用的面向多维的数组索引
  • 求sum/mean等聚合函数
  • 线性代数函数,比如求解逆矩阵、求解方程组

创建array的便捷函数

使用arange创建数字序列

和python中的range一样:

在这里插入图片描述

使用ones创建全是1的数组

使用ones_like创建形状相同的数组

zeros和zeros_like同理

empty和empty_like类似,填的全是随机数而非0

fill和fill_like也是,填的是自己想要的值

在这里插入图片描述
在这里插入图片描述

使用random模块生成随机数的数组

在这里插入图片描述

在这里插入图片描述

array本身支持大量操作和函数

这些操作如果用python实现需要写很多for循环,用numpy数组很容易

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

最大的特点:array对象,以数组为单位进行运算,不需要for循环!!

Numpy怎样对数组使用索引查询

基础索引

一维数组

索引和python的List一样

二维数组

不太一样嗷,List中是跟C语言的数组一样的,例如x[i][j]

然鹅,array中是x[i,j]

中间是用逗号隔开的!!

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

神奇索引(对比基础索引,他多了个中括号,因为它是对好多的行和列,而基础索引只是某一行/连着的某几行(切片))

一维数组

在这里插入图片描述

在这里插入图片描述

argsort传回来的是下标,然后根据神奇索引访问

感觉就是根据index代入啊!!!索引到value然后代入index的输入形式!!

二维数组

在这里插入图片描述

在这里插入图片描述

  • 规律:

​ 数组之间有逗号逗号之前是一个数组,代表要取的行号逗号后面是也一个数组,代表要取得列号!!!

原则仍然是根据索引代换进去!!!

布尔索引

一维数组

bool类型就是true或者false哇,就是一种阈值的方法

在这里插入图片描述

在这里插入图片描述

二维数组

在这里插入图片描述

意思是,输出【第三列】元素值【大于5】的那些行

bool的二维数组只有True和False的时候,再以它作为参数,取到的索引是一维的!!!

条件的组合

在这里插入图片描述

Numpy常用random随机函数汇总

在这里插入图片描述

rand函数,参数表示维度(0到1)

在这里插入图片描述

randn函数,范围不一定在0到1之间,而是呈正态分布

在这里插入图片描述

randint函数,生成某一个范围内的整数随机数

在这里插入图片描述

random函数(0到1)(只有一个size)(和最上面额rand函数没啥区别啊???参数都是维数!!)

在这里插入图片描述

choice函数(顾名思义,就是选择嘛)

在这里插入图片描述

最外层逗号把参数分成前后两块,前面一部分是【给你选的东西】(如果【给你选的东西】是一个数字n,则表示range(n),如果是一个List,则表示在这个里面挑选),后面一部分是size,确定了维度!!

shuffle()函数,打乱顺序!!(修改原数组,无返回值!!)

在这里插入图片描述

遇到多维数组,只会对第一维度进行打乱!!!

意思就是这样的效果:
在这里插入图片描述

即进行行打乱,但是后面还是跟着第一位(老大)的!!!同一行一直是同一行,只是行与行之间打乱

permutation(x)函数(也是打乱,但是与shuffle不同)

把一个数组x进行随机排列,或者数字的全排列

在这里插入图片描述

这与shuffle类似,一个数的时候表示range(n),多个数则表示多维度

但是!!!!shuffle是浅拷贝,即改变了原数组;而permutation是深拷贝,返回的是一个新的数组,不改变原来数组的值!!!!!!

normal()函数

按照平均值loc和方差scale生成高斯分布的数字

在这里插入图片描述

uniform()函数(【自定范围内】【自定维度】随机数)

在这里插入图片描述

实例:对数组加入随机噪声

在这里插入图片描述

效果如下

在这里插入图片描述

在这里插入图片描述

Numpy常用的数学统计函数

Numpy有哪些数学统计函数

在这里插入图片描述

np.cumsum(arr):

某个位置的值是这样得出来的,计算从arr[0]开始一直到这个位置的所有元素和(cumprod同理),用处是,累计一个东西,比如一个水电费啥的

np.percentile(百分数划分),quantile(小数划分):

就是把整个数组按值整成在一个数轴上,然后取位于百分之多少上的数(如果不是整数,就取两侧数据的平均)

​ 举个例子:高等院校的入学考试成绩经常以百分位数的形式报告。比如,假设某个考生在入学考试中的语文部分的原始分数为 54 分。相对于参加同一考试的其他学生来说,他的成绩如何并不容易知道。但是如果原始分数54分恰好对应的是第70百分位数,我们就能知道大约70%的学生的考分比他低,而约30%的学生考分比他高。

在这里插入图片描述

中位数、平均数 、标准差、方差、加权平均

对于加权平均,因为arr.shape是元组类型,例如(1,2,3)

  • 如果要用np.random.rand(),则必须要传入“1,2,3”而非"(1,2,3)",因此要用"*"号,把元组打散成元素!!!!

  • 如果要用np.random.random(),则可以传入"(1,2,3)",变成np.random.random((1,2,3)),就不需要用“*”打散元组了!!!

怎么实现按不同的axis计算

在这里插入图片描述

举个例子:

当axis=0时,就是把整个数组上下压扁,压成一行

当axis=1时,就是把整个数组左右压扁,压成一列,然后再横着排成一行

实例:机器学习中将数据进行标准化

在这里插入图片描述

  • 小知识点:Numpy的广播

在这里插入图片描述

如图,arr为3×4的矩阵,但是mean是每一列平均值组成的,是1×4的矩阵,这时候他会自动把后者复制成三份,变成3×4的矩阵,再和arr进行运算。这就是numpy的广播。

例子:

在这里插入图片描述

效果如下:

在这里插入图片描述

标准化的公式要牢记嗷!!!

标准化的公式要牢记嗷!!!

标准化的公式要牢记嗷!!!

Numpy计算数组中满足条件的个数

需求:有一个非常大的数组比如1亿个数字,求出里面数字小于5000的数字数目

1.使用numpy的random模块生成1亿个数字

在这里插入图片描述

2.使用Python原生语法实现

在这里插入图片描述

3.使用numpy的向量化操作实现

在这里插入图片描述

这里用到了Numpy的布尔索引

对比体会一下python原生语法的遍历和numpy的bool索引!!!

对比体会一下python原生语法的遍历和numpy的bool索引!!!

对比体会一下python原生语法的遍历和numpy的bool索引!!!

Numpy怎么给数组增加一个维度

在这里插入图片描述

方法1:np.newaxis关键字

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 咋理解呢?

就是逗号左边是行,右边是列,然后np.newaxis在左边的时候意思就是:添加了空的行

如果np.newaxis在逗号右边,意思就是:添加了空的列!!!

方法2:np.expand_dims方法

在这里插入图片描述

其效果和上面np.newanxis关键字一摸一样(不过感觉这个好理解啊)

axis=0则是添加空行,这个之前用mean、sum、average等进行每一列的计算时的想法相同,都是液压机压缩的方法axis=1则是左右压缩!!!

方法3:np.reshape方法

在这里插入图片描述

在这里插入图片描述

因为我们很多时候,其实数据太多,不知道到底有多少数据

这个时候就用“-1”来让Numpy自己算到底有多少数据即可!!!

Numpy非常重要的数组合并操作

  • 行合并的三种方法

在这里插入图片描述

  • 列合并的三种方法

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值