Numpy中的通用函数和聚合

13825820-c342ec231fba0658.jpg
  1. 概述

在Numpy中存在着通用函数和聚合去对数据进行处理,numpy通过向量进行对数据数组的计算,而这些向量主要依靠一些通用函数,而聚合是numpy对面对大量数据时获取描述性统计信息的方法。

  1. numpy的通用函数

1、为什么用numpy的通用函数而不用Python的循环做逐个元素的计算

NumPy 提供了一个简单灵活的接口来优化数据数组的计算,使得numpy成为python数据科学中极其重要的一部分。Numpy主要是通过向量进行操作的,而这些操作主要依靠他的一些通用函数实现,接下来,我们就去学习这些通用函数,以方便我们提高元素重复计算的效率。

学习numpy通用函数,我们首先举个例子:

假设我们想要计算一个数组元素的倒数:

方法1:用循环迭代执行

方法2:用Numpy的通用函数进行计算

1.1用Python的循环语句实现

13825820-729fa42b131da037.jpg

1.2 用numpy的通用函数实现

13825820-26120b91f38a175e.jpg

1.3对比一下两者运行的时间

13825820-90674e1396002762.jpg

这时候就会发现循环的时间复杂度很高,直接用数组通用函数进行计算,速度是python代码循环进行计算的10倍左右。

2、常用通用函数

2.1数组的运算

NumPy 通用函数的使用方式非常自然,因为它用到了 Python 原生的算术运算符,标准的 加、减、乘、除都可以使用:

13825820-701bdbbb1dd95ede.jpg
  • 加法,直接用+号或者使用np.add()
13825820-f17731e21876be88.jpg
  • 除法,使用/号或者np.divide()
13825820-3698a058ff94a10e.jpg
  • 平方,使用**或者np.power()
13825820-1d2d6e6773d5c369.jpg
  • 乘法,使用*号或者np.multiply()
13825820-4dd56785278e918c.jpg

剩余的通用函数操作:

运算符

对应的通用函数

描述

Np.add

加法运算(即 1 + 1 = 2)

Np.subtract

减法运算(即 3 - 2 = 1)

Np.negative

负数运算(即 -2)

Np.multiply

乘法运算(即 2 * 3 = 6)

/

Np.divide

除法运算(即 3 / 2 = 1.5)

//

Np.floor_divide

地板除法运算(floor division,即3//2 = 1)

**

Np.power

指数运算(即 2 ** 3 = 8)

%

Np.mod

模 / 余数(即 9 % 4 = 1)

2.2绝对值

正如NumPy 能理解 Python 内置的运算操作, NumPy 也可以理解 Python 内置的绝对值 函数:

13825820-faab501e93cf39dc.jpg

Numpy的计算速度还是快一些的。

2.3三角函数

NumPy 提供了大量好用的通用函数,其中对于数据科学家最有用的就是三角函数。首先定义一个角度数组:

13825820-9877547bded5b5e5.jpg

然后进行三角函数运算

13825820-406759a8bd723aee.jpg

当然反三角函数也是支持的

13825820-c2efaf5d798c0b3b.jpg

2.4指数和对数

Numpy中也提供了对指数和对数进行运算的方法

  • 指数运算
13825820-785b3e05d41f0275.jpg
  • 以e为底的对数运算
13825820-456ecb39656b13ae.jpg
  • 以2为底的对数运算
13825820-f908a1cc5e1db8c7.jpg
  • 以10为底的对数运算
13825820-ce70896b3692cf98.jpg
  1. 通用函数特性

1.指定输出

在进行大量运算时,有时候指定一个用于存放运算结果的数组是非常有用的。不同于创建 临时数组,你可以用这个特性将计算结果直接写入到你期望的存储位置。所有的通用函数 都可以通过out参数来指定计算结果的存放位置:

这个特性也可以被用作数组视图,例如可以将计算结果写入指定数组的每隔一个元素的位置:

13825820-b2a3877df8c3a26d.jpg

2.聚合

  • 对通用函数调用reduce方法会返回数组中所有元素的和:
13825820-60542f67917e586b.jpg

对内积调用reduce也同样会返回数组的内积

  • 对通用函数调用accumulate,会返回每次计算的结果
13825820-1f23f976896605ab.jpg

3.外积

任何通用函数都可以用 outer 方法获得两个不同输入数组所有元素对的函数运算结果。这意味着你可以用一行代码实现一个乘法表:

13825820-938e0d38bc280ba0.jpg

三、聚合:最大值、最小值和其他值

当我们面对大量的数据时,首先想到的就是去获取他们的一些描述性统计信息,比如中值、中位数、均值、最大值、最小值、和、乘积等。Numpy内置的一些方法,在求取这些信息时,会非常的便利和高效。下面我们就去介绍一些比较常用的:

1.数组值求和

13825820-68de78632a308d17.jpg
13825820-8b14a2f5aa497bcc.jpg

由于Numpy的sum函数是在编译的过程中进行计算的,因此速度会比python的sum更快一些。

2、最大值和最小值

同样,Python也有内置的min函数和max函数,分别被用于获取给定数组的最小值和最大值:

13825820-8c574db576428458.jpg

对于 min、 max、 sum 和其他 NumPy 聚合,一种更简洁的语法形式是数组对象直接调用这些方法:

13825820-3d2d02e3c8318961.jpg

3、多维度聚合

一种常用的聚合操作是沿着一行或者一列聚合。例如,有着一个二维数组,我们想要统计他的一些聚合信息:

13825820-b3abeeffa47648fb.jpg

默认情况下,每一个Numpy聚合函数都会返回对整个数组的聚合结果:

13825820-77587972e168f836.jpg

聚合函数还有一个参数,用于指定沿着哪个轴的方向进行聚合。例如,可以通过指定 axis=0 找到每一列的最小值:

13825820-aaf1bbf4b916f1fb.jpg

找到行的最大值类似的操作,让axis = 1 就可以实现

13825820-810651a114e3a602.jpg

axis 关键字指定的是数组将会被折叠的维度,而不是将要返回的维度。因此指定 axis=0 意味着第一个轴将要被折叠——对于二维数组,这意味着每一列的值都将被聚合。

4、其他聚合函数

Python中其他可用的聚合函数:

函数名称

NaN安全版本

描述

np.sum

np.nansum

计算元素的和

np.prod

np.nanprod

计算元素的积

np.mean

np.nanmean

计算元素的平均值

np.std

np.nanstd

计算元素的标准差

np.var

np.nanvar

计算元素的方差

np.min

np.nanmin

找出最小值

np.max

np.nanmax

找出最大值

np.argmin

np.nanargmin

找出最小值的索引

np.argmax

np.nanargmax

找出最大值的索引

np.median

np.nanmedian

计算元素的中位数

np.percentile

np.nanpercentile

计算基于元素排序的统计值

np.any

N/A

验证任何一个元素是否为真

np.all

N/A

验证所有元素是否为真

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值