天天看点

argmax函数_Python学习日记三之NumPy函数

argmax函数_Python学习日记三之NumPy函数

通过小编前面两篇日记分别记录了NumPy基础跟数据的存取。本日记将记录NumPy库一些比较常用的函数。通过本日记希望同学们能学习到NumPy的相关知识。还没有阅读过小编前面的两篇日记,可以点击下面链接进行阅读。

日记一:https://zhuanlan.zhihu.com/p/144194230

日记二:https://zhuanlan.zhihu.com/p/144576288

一、NumPy的随机数函数——random子库

1、首先,同学可能会有疑问,Python不是自带random库吗,为什么NumPy还自带一个random子库?

对于这两个random,其实还是有区别的。

1)Python自带的random库一般提供一些产生随机数的基本函数,可以满足基本需求,也一般用在建立一维数组。

2)NumPy自带的random子库一般提供一些产生随机数的高级函数,可以满足高级需求,也一般用在建立多维数组。

所以,小编觉得假若同学们用random的目的跟数据分析无关,就单纯地生成几个随机数去进行相关运算,则选择Python自带的random库就可以了,如果要进行数据分析相关操作的话,选择NumPy的random子库或许是更优的选择。

2、NumPy的random子库

argmax函数_Python学习日记三之NumPy函数

random子库的基础函数

3、下面将通过例子来熟悉上面的函数。

1)例1:对rand()、randn()、和randint()的使用,代码如下

argmax函数_Python学习日记三之NumPy函数

例1

2)可能有同学疑问,函数表里面的seed()函数是干嘛用的。来看看下面的例子2或许就理解了。代码如下

argmax函数_Python学习日记三之NumPy函数

例2

可以发现randint()函数去随机产生两个数组,产生的两个数组是一模一样的,这就是seed()函数的作用所在。

3)例3:对shuffle()和permutation()函数的,代码如下

argmax函数_Python学习日记三之NumPy函数

例3

观察例子3,可以发现shuffle()和permutation()这两个函数的区别在于使用shuffle()函数会改变原来的数组,而permutation()函数则不会改变原来的数组。

4)例4:choice()函数的使用,代码如下

argmax函数_Python学习日记三之NumPy函数

例4

当设置参数replace为False时表示不重用元素,默认时为True,p=a/np.sum(a)表示以p为概率从数组a中抽取元素。

5)例5:对uniform()、normal()和poisson()函数的应用,代码如下

argmax函数_Python学习日记三之NumPy函数

例5

二、NumPy的统计函数

NumPy直接提供统计类函数,比如求一个数组的和、期望、平均值等等,具体函数如下

argmax函数_Python学习日记三之NumPy函数

NumPy的统计函数

下面将通过几个例子来熟悉上面的函数。

1、例1:对sum()、mean()和average()函数的使用,代码如下

argmax函数_Python学习日记三之NumPy函数

例1

其中,对求和函数sum(),假若没有给定轴axis,则对所有数进行求和,若给定轴axis=0,则对每列进行求和,axis=1则对每行进行求和。对于下面函数也一样,axis=0对每列进行运算,axis=1对每行进行运算。

2、例2:对std()和var()函数的使用,代码如下

argmax函数_Python学习日记三之NumPy函数

例2

3、例3:对max()、min()、argmax()、argmin()和unravel_index()函数的使用,代码如下

argmax函数_Python学习日记三之NumPy函数

例3

其中,对于数组a的最大值为19,而argmax()函数则是输出降一维后最大值的下标;数组a的最小值为0,而argmin()函数则是输出降一维后最小值的下标。unravel_index()函数则是根据shape的形状降一维下标转换成多维下标。

4、例4:对ptp()和median()函数的使用,代码如下

argmax函数_Python学习日记三之NumPy函数

例4

三、NumPy的梯度函数

argmax函数_Python学习日记三之NumPy函数

NumPy的梯度函数

假设XY坐标轴连续三个X坐标对应的Y轴值分别是:a、b、c,则其中b的梯度为:(c-a)/2

下面通过几个例子来认识梯度函数。

1、例1:从1-20里面随机产生5个数,并进行梯度的计算,代码如下

argmax函数_Python学习日记三之NumPy函数

例1

有同学可能会有疑问,第一个和最后一个的梯度应该怎么算,

例a[0]的梯度为(a[0]-a[1])/1=(1-1)/1=0;a[4]的梯度为(a[4]-a[3])/1=(18-9)/1=9)。

2、例2:从1-20里面随机产生一个3*4个数,并进行梯度的计算,代码如下

argmax函数_Python学习日记三之NumPy函数

例2

看到这里,可能同学会有疑问,为什么梯度计算的结果有两个数组。其实第一个数组是最外层维度的梯度计算,即以每列去进行梯度的计算。第二个数组是第二层维度的梯度计算,即以每行去进行梯度的计算。同学们可以自行求证。

对于NumPy库的基础知识,也在此完成了记录。

欢迎大家一起交流学习。

如果想更深入了解NumPy的相关应用,请看相应的官方文档:https://www.numpy.org.cn/

继续阅读