本章主要内容概览:
1、用于数据整理和清理、子集构造和过滤、转换等快速的矢量化数组计算
2、常用的数组算法:排序、唯一化、集合运算
3、高效的描述统计和数据聚合(摘要)运算
4、用于数据集的合并/连接运算的数据对齐和关系型数据运算
5、将条件逻辑表述为数组表达式
6、数据的分组运算(聚合、转换、函数应用等)
本章重点内容:
一、Numpy的多维数组
ndarray是一个通用同构数据多维容器,也就是说,其中所有元素必须是相同类型的。
创建多维数组ndarray=np.array(),参数是一切序列型的对象(列表,元组,数组等)(包括其他数组),嵌套序列(例如一组等长列表组成的列表)也会被转换成一个多维数组
np.zeros()创建一个指定长度全为0的数组;np.ones()创建一个指定长度全为1的数组。np.empty()创建一个空数组
1、常用数组创建函数:
import Numpy as np
array()
asarray()将输入转换为数组
arange()返回一个多维数组,而不是列表
zeros()
ones()
empty()
eye(), identity()创建一个指定的N维单位矩阵
2、Numpy数据类型
浮点数,整数,字符串,布尔值,复数,对象
数据类型转换方法astype()
3、数组的索引和切片
取数组一个元素arr[i]
取数组多个元素arr[i:j]
对于多维数组来看,各索引位置上的元素不再是标量而是一维数组
切片索引
一维数组arr[1:6]
多维数组arr[1:2,2:3]
布尔型索引
取出条件为真值的元素arr[Ture, False, True, False]
布尔运算符:!=不等于 -否定 &与 |或
花式索引
以特定顺序选取子集,只需传入一个用于特定顺序的整数列表或多维数组
arr[[1,2,3,4]]
多个索引数组
arr[[1,5,7,2],[0,3,2,1]]
array([4,23,29,10])
arr[[1,5,7,2]][:[0,3,2,1]]
arr[np._ix([[1,5,7,2],[0,3,2,1]])]
数组转置和轴对换
二维数组矩阵 方法.T
多维数组的方法 .swapaxes(1,2)
4、通用函数:快速的元素级数组函数
通用函数就是对多维数组中的每个元素执行相同的运算
一元通用函数表
abs()绝对值函数;sqrt()平方根;square()平方;exp()指数函数;log、log10、log2自然对数、底数为10,2
sign()符号函数;ceil()求大于等于该值的最小整数;floor()小于等于该值得最小整数;rint()四舍五入最近的整数
modf()将数组的小数和整数部分以两个独立数组形式返回;isnan()确定元素是否是NaN,返回一个布尔型数组
二元通用函数表
add()将数组中对应的元素相加
subtract()从第一个数组中减去第二个数组中的元素
multiply()数组元素相乘
divide()除法 floor_divide()丢弃余数
power()第一个数组A,第二个数组B,A为底,B为幂
maximum()最大值,fmax()忽略NaN minimum(),fmin()
mod()求余数
greater、greater_equal、less、less_equal、equal、not_equal元素级的比较运算符,产生布尔型数组,大于、大于等于、小于、小于等于、等于、不等于
logical_and logical_or logical_xor 执行元素级的真值运算,相当于&、|、^
数组表达式代替循环叫做矢量化
5、将条件逻辑表述为数组运算
主要函数np.where(cond, x, y)cond条件,满足条件数组x,否则数组y。还可以嵌套
6、数学统计方法
.mean(),.sum()这类函数可以接受一个axis参数
常用函数和方法
sum(), mean(), std(),var(), min(),max(),argmin(),argmax()分别为最大和最小元素的索引
cumsum()所有元素的累积和 cumprod()所有元素的累积()
7、布尔型数组的方法()
.any() .all()
8、唯一化函数及集合的运算
np.unique()删除数组中重复的值返回有序结果
intersect1d(x,y)计算x y中公共元素,返回有序结果
union(x,y)计算x和y中的并集
in1d(x,y)得到一个表示:x的元素是否包含于y中的布尔型数组
setdiff1d(x,y)集合的差,在x中,不在y中
二、用于数组的文件输入和输出
Numpy能够读写磁盘上的文本数据和二进制数据。pandas主要读取表格型数据
两个主要函数np.save()和np.load()
存取文本文件np.loadtxt()和np.genfromtxt()
三、线性代数
x.dot(y)矩阵x,y的乘积 相当于np.dot(x,y)
常用的numpy.linalg函数
diag()以一维数组的形式返回方阵的对角线元素,或者将一维数组转换为方阵(非对角线元素为零)
dot()矩阵乘法
trace()计算对角线元素的和
det()计算矩阵行列式
eig()计算方阵的特征向量和特征值
inv()计算方阵的逆
pinv()计算矩阵的Moore-Penrose伪逆
qr()计算奇QR分解
svd()计算奇异值分解(SVD)
solve()解线性方程组Ax=b,其中A为一个方阵
lstsq()计算Ax=b的最小二乘解
四、随机数的生成
numpy.random模块常用的函数
seed()确定随机数生成器的种子
permutation() 返回一个序列的随机排列或返还一个随机排列的范围
shuffle()对一个序列就地随机排列
rand()产生均匀分布的样本值
randint()从给定的上下限范围内随机取整数
randn()产生均值为0,标准差为1的正态分布的样本值
normal()产生正态分布的样本值
binomial()产生二项分布的样本值
beta()产生Beta分布的样本值
chisquare()产生卡方分布的样本值
gamma()产生Gamma分布的样本值
uniform()产生在[0,1)中均匀分布的样本值