数据分析 | Numpy进阶

在职场中不完全是技术,还有其它方面的东西,你应该知道:

工作不止眼前的苟且,还有诗和远方

本文知识结构图:

回顾:

Python数据分析之旅: 前戏

数据分析 | Numpy初窥

索引与切片

切片索引Numpy中选取数据子集或者单个元素的方式有很多,一维数组和Pyhon列表的功能差不多,看下图:

数组切片与列表最重要的区别在于:数组切片是原始数组的视图,这就是说数据不会被复制,视图上的任何修改都有会直接反映到源数据上,也就是说视图上的任何修改都有会直接改动到数据源,看下图运行效果:

为什么是这样的?因为Numpy设计初衷就是处理大数据,所以可以想象一下,假如Numpy坚持要将数据复制来复制去的话会产生性能与内存等问题.

tips:如果想得到ndarray切片的一份副本而非视图,就需要显示地进行复制操作,例如下图:

多维数组

注意:直接给元素赋值,返回的数组都有是视图,是直接映射到数据源上,如有改变也会影响到数据源

说明:布尔索引与花式索引不常用,不作讲解!

通用函数运算

运算和数据处理

Numpy数组使你可以将许多种数据处理任务表述为简洁的数据表达式,否则需要编写循环,用数组表达式代替循环的做法通常称为失量化.失量化的运算比普通的Python运算更快.

条件逻辑表述为数组运算

numpy.where函数是三元表达式x if condition else y的失量化版本,np.where的第二个和第三个参数不必是数组,它们都有可以是标量值,在数据分析中where通常用于根据另一个数组而产生一个新的数组,如下:

用于布尔型数组的方法
数据唯一化及集合运算

Numpy提供了一些针对一维ndarray的基本集合运算,最常用的就是np.unique,它用于找出数组中的唯一值并返回已排序的结果:

数组的文件输入输出

Numpy能够读写磁盘上的文本数据或者二进制数据.

将数组以二进制格式保存到磁盘

np.save 和 np.load 是读写磁盘数组数据的两个主要函数,默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为.npy的文件中.

np.savez可以将多个数组保存到一个压缩文件中,将数组以字参数的形式传入

看下图:

线性代数

线性代数是任何数组库的重要组成,Numpy提供了一个用于矩阵乘法的dot函数

numpy.linalg中一组标准的矩阵分解运算,如求逆和行列式之类的东西. 见下章公式

最后

关于Numpy教程当前就做到这里,我下一篇会把整个知识点做一个知识网络图,以上只是Numpy的部分使用,如果单纯演示公式,意义不大。下一章,我把所有的公式补上,方便查阅.

再下一篇是关于Pandas的教程,Numpy深入部分先放一下,等把Pandas教程做完再补上,因为Pandas是对Numpy的进一步补充,等等大家熟悉了Pandas再回头看Numpy高级部分更容易理解.

原文发布于微信公众号 - Python绿色通道(Future_coder)

原文发表时间:2018-10-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习实践二三事

Python-OpenCV(5)

这次咱们比较下,python的函数、numpy的函数和OpenCV的函数的效率问题,让大家对功能相同的情况下如何选择合适的函数有比较直观的认识 程序(语句)运行...

24670
来自专栏函数式编程语言及工具

FunDA(13)- 示范:用户自定义操作函数 - user defined tasks

   FunDA是一种函数式的编程工具,它所产生的程序是由许多功能单一的细小函数组合而成,这些函数就是用户自定义操作函数了。我们在前面曾经提过FunDA的运作原...

18880
来自专栏苦逼的码农

【算法实战】生成窗口最大值数组

做算法题了,题的难度我们分为“士,尉,校,将”四个等级。这个算法题的模块是篇幅比较小的那种模块。首先是给出一道题的描述,之后我会用我的想法来做这道题,今天算是算...

13520
来自专栏PPV课数据科学社区

Pandas速查卡-Python数据科学

Josh Devlin 2017年2月21日 Pandas可以说是数据科学最重要的Python包。 它不仅提供了很多方法和函数,使得处理数据更容易;而且它已经...

41880
来自专栏Java架构沉思录

如何优雅地过滤敏感词

敏感词过滤功能在很多地方都会用到,理论上在Web应用中,只要涉及用户输入的地方,都需要进行文本校验,如:XSS校验、SQL注入检验、敏感词过滤等。今天着重讲讲如...

49410
来自专栏C语言及其他语言

【编程经验】C语言中如何使用随机数?

C语言中如何使用随机数 随机数的使用,是不少在学C语言过程中进行一些小功能开发的同学的一个技术问题,今天我们就为大家讲解如何在C语言中使用随机数...

57480
来自专栏机器学习算法与Python学习

资源 | 23种Pandas核心操作,你需要过一遍吗?

Pandas 是基于 NumPy 构建的库,在数据处理方面可以把它理解为 NumPy 加强版,同时 Pandas 也是一项开源项目。它基于 Cython,因此读...

11440
来自专栏阿凯的Excel

或关系模糊匹配求均值(虐心升级版)

上期和大家分享了如何使用数组函数实现或关系求均值。 本期和大家分享进一步的应用,或关系模糊匹配求均值。 如果没看上期直接看本期会比较痛苦,来个传送门! 点击我可...

31260
来自专栏java 成神之路

java.util.Random 实现原理

36650
来自专栏蜉蝣禅修之道

Max-Min Fairness带宽分配算法

26960

扫码关注云+社区

领取腾讯云代金券