numpy学习总结

Contents


Numpy是一个用python实现的科学计算包,主要提供矩阵运算的功能,而矩阵运算在机器学习领域应用非常广泛,Numpy一般与Scrapy、matplotlib一起使用。

Numpy用途


Numpy主要用作高性能计算和数据分析,其操作是围绕ndarray这么一个矩阵元素来进行。在数据分析的应用中,Numpy主要功能体现在:
1.用于数据清理和整理、子集构造和过滤、转换等快速的矢量化数组运算
2.常用的数组算法、如排序、化、集合运算等
3.统计和数据聚合运算
4.异构数据的合并/连接/转换

Numpy的安装


如果你环境没问题的话,pip install numpy即可,如果遇到问题,就到网上去下载wheel,用pip install .whl的方法进行安装。这里就不赘述了。

Numpy常用方法总结

创建矩阵



我们习惯把Numpy简写作np
对于多维对象,以此类推即可

获取矩阵行数列数(二维情况)


针对上面的代码,只需print(a2.shape),就会打印出一个元组(2,5)分别是2和5.

矩阵的截取

使用索引切片运算


我们以一个索引切片对二维数组进行操作的实际情况为例

在上面的例子中,切片运算是以[start:end]形式,也就是指定起始索引(包括)与结尾索引(不包括)来切出子字符串。
举个例子,在a[0:1]中,就是[start:end]中start等于0,end等于1的情况下,在这种情况下,就会显示数组a的第0行(包括)到第1行(不包括)的数据。先来就是[[1,2,3,4,5]]
再来看一个例子,在a[1,2:5]中,逗号前的1代表第一行(实际上是第二行,但是我习惯把真正的第一行称作第0行来对应它的数字),逗号后的2:5,就是第二列(包括)到第五列(不包括)的数字。还是那个问题,因为我习惯上把第一行称作第0行来对应实际上的第一行,因此这里的实际上是第三列(包括)到第六列(不包括),这个得看你们各自的习惯,只要理解了都是可以的。
切片索引的另一个形式就是[start:end:step],也就是切出起始索引与结尾索引(不包括)之间每次间隔step元素的内容(也就是省略step时,就相当于使用1).还是来看一个例子

a[1,2:5:2]的意思就是获取第一行的第二列(包括)到第五列(不包括)的数值,但是其中间隔为2,就是每次间隔为2后获取一下值。它的输出结果显然就是[8,10]了。
实际上了解索引意义的开发人员都知道索引其实就是相对第一个元素的便宜值。在python中,正索引就是指正偏移值,负索引就是负偏移值,-1索引就是倒数第一个元素,-2索引就是倒数第二个元素。
我们再来看一个例子

其中逗号前的1仍是指第一行,后面的依旧符合[start:end]的规则,从第四列(包括)到第二行(不包括),每次都相对于第一个元素偏移-1个单位,显然值就是[10,9]

按条件截取


按条件截取其实是在[]中传入自身的布尔语句
我们先来看一个最简单的例子
大专栏  numpy学习总结xjh.cn/http://zzulixjh.cn//2018/07/16/numpy/e.png"/>
那么它就会输出[7,8,9,10]
再来看一个满足一定条件的元素变成特定的值的例子

其实不二语句首先会生成一个布尔矩阵,将布尔矩阵传入[]实现截取
我们可以打印一下 a>6

矩阵的合并



其中hstack是将矩阵横向合并,vstack是将矩阵纵向合并

一些创建矩阵的函数

arange


我们可以通过arange来创建一些有规律的常用的矩阵
例如 a = np.arange(10)会创建一个从0开始到10(不包括10),步长为1的矩阵
[0,1,2,3,4,5,6,7,8,9]

linspace


linspace()用于创建指定数量等间隔的序列,实际产生一个等差数列。
例如 np.linspace(0,10,7)就是产生首位是0,末尾是10,含7个数的等差数列

logspace


logspace用于产生等比数列
例如np.logspace(0,4,5)就是产生首位是10的0次方,末尾是10的四次方的含5个数的等比数列。

矩阵的运算

常用矩阵函数


np.sin(a) 对矩阵a中每个元素取正弦,sin(x)
np.cos(a) 对矩阵a中每个元素取余弦,cos(x)
np.tan(a) 对矩阵a中每个元素取正切,tan(x)
np.arcsin(a) 对矩阵a中每个元素取反正弦,arcsin(x)
np.arccos(a) 对矩阵a中每个元素取反余弦,arccos(x)
np.arctan(a) 对矩阵a中每个元素取反正切,arctan(x)
np.exp(a) 对矩阵a中每个元素取指数函数,ex
np.sqrt(a) 对矩阵a中每个元素开根号√x
在使用这些矩阵时,只需将要进行运算的矩阵放入到()内即可,比如我要对矩阵a的元素进行sin()操作,只需np.sin(a)

矩阵乘法


矩阵乘法必须满足矩阵乘法的条件,即第一个矩阵的列数等于第二个矩阵的行数。
矩阵乘法的函数位dot

矩阵转置


如果需要将矩阵a进行转置,只需a.T即可

矩阵信息的获取

最大值最小值


获得矩阵中元素最大最小值的函数分别是max和min,可以获得整个矩阵、行或列的最大值最小值。对于矩阵a:
a.max() 整个矩阵的最大值
a.min() 整个矩阵的最小值
a.max(axis=0)获取每一行上的最大值
a.min(axis=0)获取每一行上的最小值
a.max(axis=1)获取每一列上的最大值
a.min(axis=1)获取每一列上的最小值

平均值


平均值的函数为mean(),其余方法和最大最小值差不多。

方差


方差的函数为var(),var()相当于mean(abs(x-x.mean())**2)
针对行列的方差参考最大值最小值

标准差


标准差的函数为std(),相当于sqrt(x.var())

求和


矩阵求和的函数是sum(),可以对行、列、整个矩阵求和

累计和


某位置累计和指的是该位置之前(包括该位置)所有元素的和
例如序列[1,2,3,4,5],其累计和为[1,3,6,19,15]

原文地址:https://www.cnblogs.com/lijianming180/p/12251314.html