【利用Python进行数据分析】Numpy基础:数组和矢量计算

Numpy的部分功能:

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第1张图片

对于大数据分析,作者最关心的功能是

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第2张图片

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第3张图片

一、ndarray:一种多维数据对象【行内直接称为数组】

可以直接相加,得到的结果为对应元素的相加;可以直接乘以一个数,得到的结果为对应元素的乘积。

每个数组都有一个shape和一个dtype

1.创建ndarray

data=[1,2,3,4]

arr1=np.array(data)

arr1:array([1,2,3,4])

如果没有特殊说明的话,python会为array自动匹配一个合适的数据类型,可以通过arr.dtype查询

np.zeros和np.ones可以创建指定长度或形状的全0或全1数组。

empty可以创建一个没有具体值的数组。

np.arange可以创建数组版的range:

numpy中,如果没有特别指定,数据类型基本都是float64.

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第4张图片

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第5张图片

ndarray的astype方法可以显式转换dtype

例:arr1.astype(np.int32)

2.基本索引和切片

这意味着如果不使用copy方法的话,对切片的任何修改都会反映到原数据上。

这两种方式是等价的:

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第6张图片

**布尔型索引

布尔型数组的长度必须跟被索引的轴长度一致,比如布尔数组为[T,F,T,F],那么选取的就是第0轴的第1个和第3个。可以和切片、整数混合使用。

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第7张图片

花式索引fancy indexing

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第8张图片

-----非常奇怪-------

如果想得到矩阵形式,有两个办法:

(1.

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第9张图片

(2.

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第10张图片

**花式索引和切片不同,它总是将数据复制到新数组中。

3.数组转置和轴对换【返回源数据的视图】

首先介绍一下数组的T属性:

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第11张图片

np.dot可以用于计算矩阵内积。

transpose方法:

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第12张图片

swapaxes方法:

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第13张图片

通用函数:对naarray中的数据执行元素级运算的函数。

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第14张图片

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第15张图片

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第16张图片

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第17张图片

4.np.where函数:将条件逻辑表述为数组运算

比较简单,直接上图:

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第18张图片

np.where也可以嵌套使用:

5.数学和统计方法

numpy包可以使得数学函数对整个数组或某个轴向的数据进行统计计算。sum、mean以及标准差std等函数,既可以当作数组的实例方法调用,也可以当作顶级Numpy函数使用。

如:arr=np.random.randn(5,4)

arr.mean():数据的实例方法

np.mean(arr):顶级Numpy函数。

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第19张图片

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第20张图片

6.用于布尔型数组的方法

布尔型数组有两个方法:any和all。any用于测试数组中是否存在一个或多个True,all用于检查数组中所有值是否都是True

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第21张图片

7.排序

通过sort方法就地排序。多维数组可以在任何一个轴上进行排序,只需将轴编号传给sort。

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第22张图片

8.唯一化以及其他的集合逻辑

Numpy提供了很多集合运算的函数。此处介绍最常用的np.unique函数,用于返回数组的唯一值并返回已排序的结果:

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第23张图片

函数np.in1d用于测试一个数组的值在另一个数组的成员资格,返回布尔型数组:

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第24张图片

9.数组文件的输入输出

Nmupy能够读写磁盘上的文本数据或二进制数据,pandas可以将表格型数据读取到内存。

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

np.save和np.load是读写磁盘数组数据的两个主要函数。数组是保存在扩展名为.npy的文件中。tong

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

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第25张图片

2)存取文本文件

假设是逗号分隔的txt:

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第26张图片

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第27张图片

np.savetxt将数组写到以某种分隔符隔开的文本文件中。还有np.genfromtxt,这些会在第12章中讲到。

10.线性代数

1)矩阵点乘

使用dot函数【既是一个数组方法也是numpy命名空间中的函数】

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第28张图片

numpy.linalg中有一组标准的矩阵分解运算以及诸如求逆和行列式之类的东西。

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第29张图片

2)随机数生成

numpy.random模块对python内置的random进行了补充,增加了用于高效生成多种概率分布的样本值的函数。

例如:

samples=np.random.normal(size=(4,4))

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第30张图片

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第31张图片

【利用Python进行数据分析】Numpy基础:数组和矢量计算_第32张图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(【利用Python进行数据分析】Numpy基础:数组和矢量计算)