Numpy的部分功能:
对于大数据分析,作者最关心的功能是
一、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.
ndarray的astype方法可以显式转换dtype
例:arr1.astype(np.int32)
2.基本索引和切片
略
这意味着如果不使用copy方法的话,对切片的任何修改都会反映到原数据上。
这两种方式是等价的:
**布尔型索引
布尔型数组的长度必须跟被索引的轴长度一致,比如布尔数组为[T,F,T,F],那么选取的就是第0轴的第1个和第3个。可以和切片、整数混合使用。
花式索引fancy indexing
-----非常奇怪-------
如果想得到矩阵形式,有两个办法:
(1.
(2.
**花式索引和切片不同,它总是将数据复制到新数组中。
3.数组转置和轴对换【返回源数据的视图】
首先介绍一下数组的T属性:
np.dot可以用于计算矩阵内积。
transpose方法:
swapaxes方法:
通用函数:对naarray中的数据执行元素级运算的函数。
4.np.where函数:将条件逻辑表述为数组运算
比较简单,直接上图:
np.where也可以嵌套使用:
5.数学和统计方法
numpy包可以使得数学函数对整个数组或某个轴向的数据进行统计计算。sum、mean以及标准差std等函数,既可以当作数组的实例方法调用,也可以当作顶级Numpy函数使用。
如:arr=np.random.randn(5,4)
arr.mean():数据的实例方法
np.mean(arr):顶级Numpy函数。
6.用于布尔型数组的方法
布尔型数组有两个方法:any和all。any用于测试数组中是否存在一个或多个True,all用于检查数组中所有值是否都是True
7.排序
通过sort方法就地排序。多维数组可以在任何一个轴上进行排序,只需将轴编号传给sort。
8.唯一化以及其他的集合逻辑
Numpy提供了很多集合运算的函数。此处介绍最常用的np.unique函数,用于返回数组的唯一值并返回已排序的结果:
函数np.in1d用于测试一个数组的值在另一个数组的成员资格,返回布尔型数组:
9.数组文件的输入输出
Nmupy能够读写磁盘上的文本数据或二进制数据,pandas可以将表格型数据读取到内存。
1)将数组以二进制格式保存到磁盘
np.save和np.load是读写磁盘数组数据的两个主要函数。数组是保存在扩展名为.npy的文件中。tong
通过np.savez可以将多少数组保存到一个压缩文件中,将数组以关键字参数的形式传入即可
2)存取文本文件
假设是逗号分隔的txt:
np.savetxt将数组写到以某种分隔符隔开的文本文件中。还有np.genfromtxt,这些会在第12章中讲到。
10.线性代数
1)矩阵点乘
使用dot函数【既是一个数组方法也是numpy命名空间中的函数】
numpy.linalg中有一组标准的矩阵分解运算以及诸如求逆和行列式之类的东西。
2)随机数生成
numpy.random模块对python内置的random进行了补充,增加了用于高效生成多种概率分布的样本值的函数。
例如:
samples=np.random.normal(size=(4,4))