基础运算 - Numpy 数据怪兽 | 莫烦Python

基础运算

作者: 莫烦 编辑: 莫烦 2021-09-19

既然 Numpy 是一个科学计算的模块,那么必定最牛逼的就是它的计算能力和多样的计算功能。 对于一个 Python 中数学运算的怪兽,Numpy 合理运用了 C 语言的能力,将 Python 的易用性和 C 的高效完美结合。

本节囊括的方法:

加减乘除

在 Numpy 中进行加减乘除可比 List 有效率多了,为什么这么说?Numpy 可以让在 Array 中的每一个元素都快速计算,甚至有时候还可以帮你自动并行运算。 比如你要为一个列表中的每个元素都加上一个值,比如收集了一批学生的身高,一年后,大家都长高了 3cm。

用列表你需要使用到一个循环,或者是一个map函数来帮你实现这个功能。

看似 map 也挺试用的,不过一般来说,这个写法还是比较复杂的。如果我们用 Numpy 的方式来实现,怎么搞?

Numpy 是可以批量进行计算的,只需要简单的 +-*/,就能进行全元素的运算,也就是向量化运算。同理,我们也可以进行其他符号的批量运算。

在科学运算,机器学习中。矩阵运算毋庸置疑十分重要, 我们在之后的小练习中也会着重体验到重要性。 下面我来介绍在机器学习中最常用的矩阵点积运算。

dot

从上面可以看出,你有两种写法。1)直接用一个矩阵 dot 另一个;2)用 np.dot(a, b) 把两个矩阵包起来。 因为 莫烦Python 有很多 AI 的内容,所以我分享的时候,就偏向于往 AI 方向带啦,见谅啦。

当然,矩阵还有很多其他的计算,比如 np.outer() 矩阵外积,np.inner() 矩阵内积 (和 np.dot() 的用法稍稍有些不同,你可以理解成 np.dot(a, b)= np.inner(a, b.T), 把 b 做一次转置)。

数据统计分析

用 Numpy 做数据分析理所应当,但是如果数据的种类多样的话,我还是比较推荐用 Pandas 来做分析的,后面我们也会进入交互式的 Pandas 教学. 不过,就我个人经验,在数据量比较大的时候,我更喜欢直接 Numpy 来搞,因为 Numpy 的速度还是要比 Pandas 快上不少。

那么什么是数据分析呢?其实也就是在数据中找到你想要的一些变量,总结数据的规律。最简单的当属找到最大值最小值了。 比如上面的身高数据,你想找全班最高和最矮的。

这里也有两种方法可以获取到最大最小,只是不同的写法罢了,你习惯用哪个就用哪个好了。

  1. np.max(a), np.min(a)
  2. a.max(), a.min()

当有一天,你有个躺尸的活动,要计算每个人躺下来头尾相连,有多长,我们怎么算?当然就是累加啦。

还有一个,累乘的计算,这个我不好做比喻,但是你肯定能在生活中找到一些需要累乘的例子的。 我还想一同介绍的是一个计数的函数,这个用来统计总共有多少人。

在统计学中,我们常会有两个概念,均值,中位数。算算你公司的平均工资是多少?不算不知道,一算吓一跳, 我们公司,因为有一个工资很高的人,平均工资是 4.82w,哈哈哈,我也被平均了。 但是这时候,为了更准确看到普通民众的薪资水平,最好还是用中位数(1.2w)更可靠。

在统计数据分布的时候,还有一个值也比较重要,standard deviation 标准差,用来描述正太分布。 这个在机器学习中,特别是深度神经网络中也非常重要,特别用于权重的生成原则。

特殊运算符号

还有一些有的没的,时不时会用上的功能,我在这里给大家介绍 4 个,但是除了这 4 个,当你需要更多能力的时候, 建议你直接搜索对应的功能。现在给你看太多,多一段时间,你也很难回忆的起来。

有的时候,其实你不关心 np.max() 或者 np.min() 的数值是多少,而是关心这个数值的序号, 比如还是那个身高的例子,我找到了最高身高,其实我是想对应上人的。用 np.argmax()np.argmin() 就能搞定。

另外一个时不时会用到的功能是,取天花板的值还是地板的值,这个在 AI 算法中也比较常见, 比如我要对其做整数话处理,抹除小数部分。

那我如果还有更自由的取值截取空间时咋办?我可以用 np.clip() 来做上下界限的值截取。

总结

其实 Numpy 中做数据运算的功能,比我这里列举的要多很多,我只是列举了一些我在数据分析和人工智能算法中,经常会使用到的一些功能。 还有更多的功能,可以在他的官方网站查找哦。


降低知识传递的门槛

莫烦很常从互联网上学习知识,开源分享的人是我学习的榜样。 他们的行为也改变了我对教育的态度: 降低知识传递的门槛免费 奉献我的所学正是受这种态度的影响。 通过 【赞助莫烦】 能让我感到认同,我也更有理由坚持下去。

    Numpy 数据怪兽