在职场中不完全是技术,还有其它方面的东西,你应该知道:
本文知识结构图:
回顾:
切片索引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
高级部分更容易理解.