
本篇文章主要讲解NumPy的科学计算函数,虽然在写这篇文章的时候还是感觉这篇文章要比前两篇文章要好些一点,但是,NumPy的这些函数才是更加重要的,做数据分析不是创建ndarray,而是操作ndarray进行计算,获取更深层的数据。所有的函数并没有进行详细解释,需要用到直接在IPython中输入+“?”查看。
通用函数(Universal Functions)是一种对数据执行元素级运算的函数。
一元ufunc
| 函数 | 说明 |
|---|---|
| abs、fabs | 计算整数、浮点数或复数的绝对值。对于非复数值,可以使用更快的fabs |
| sqrt | 计算各元素的平方根。相当于arr**0.5 |
| square | 计算各元素的平方。相当于arr**2 |
| exp | 计算各元素的指数$e^x$(这里简书居然不支持e的x次方) |
| log、log10、log2、log1p | 分别为自然对数(底数为e)、底数为10的log、底数为2的log、底数为(1+x) |
| sign | 计算各元素的正负号:1(正数)、0(零)、-1(负数) |
| ceil | 计算各元素的ceiling值,即大于等于该值的最小整数 |
| floor | 计算各元素的floor值,即小于等于该值的最大整数 |
| rint | 将各元素值四舍五入到最接近的整数,保留dtype |
| modf | 将数组的小数和整数部分以两个独立的数组的形式返回 |
| isnan | 返回一个表示“那些是NaN”的布尔型数组 |
| isfinite、isinf | 分别返回一个表示“哪些元素是有穷的(非inf,非NaN)”或“那些数据是无穷的”布尔型数组 |
| cos、cosh、sin、sinh、tan、tanh | 普通型和双曲线型三角函数 |
| arccos、arccosh、arcsin、arcsinh、arctan、arctanh | 反三角函数 |
| logical_not | 计算个元素not x的真值。相当于-arr |
二元ufunc
| 函数 | 说明 |
|---|---|
| add | 将数组中对应的元素相加 |
| subtract | 从第一个数组中减去第二个数组中的元素 |
| multiply | 数组元素相乘 |
| divide、floor_divide | 除法或向下圆整除法(丢弃余数) |
| power | 对第一个数组中的元素A,根据第二个数组中的相应元素B,计算$A^B$ |
| maximun、fmax | 元素级的最大值计算。fmax将忽略NaN |
| mininum、fmin | 元素级的最小值计算。fmin将忽略NaN |
| mod | 元素级的求模计算(除法的余数) |
| copysign | 将第二个数组中的值得符号复制给第一个数组中的值 |
| greater、greater_equal、less、less_equal、equal、not_equal | 执行元素级的比较运算,最终产生布尔型数组。相当于中缀运算符>、>=、<、<=、==、!= |
| logical_and、logical_or、logical_xor | 执行元素级的真值逻辑运算。相当于中缀运算符&、|、^ |
基本数据统计
| 函数 | 说明 |
|---|---|
| sum | 对数组中全部或某轴向的元素求和。零长度的数组的sum为0 |
| mean | 算数平均数。零长度的数组的mean为NaN |
| std、var | 分别为标准差和方差,自由度可调(默认为n) |
| min、max | 最大值和最小值 |
| argmin、argmax | 分别为最大和最小元素的索引 |
| cumsum | 所有元素的累计和,所产生的是一个中间结果的新数组,axis默认为None,此时产生一维的累计和数组,axis为其它值时,产生的数组将和原数组shape相同。 |
| cumprod | 所有元素的累计积,同上。 |
这些方法中布尔值会被强制转换为1(True)和0(False)。
问询函数
any用于测试数组中是否存在一个或多个True,而all则检查数组中是否都是True,主要用于布尔型数组,也可以用于非布尔型数组,所有非0元素将会被当成True。
将条件逻辑表述为数组运算。numpy.where(cond, xarr, yarr)函数是三元表达式x if condition else y的矢量化版本。np.where的第二个和第三个参数不必是数组,他们都可以是标量值。
排序
ndarray的sort是就地排序,而顶级方法np.sort会为原数组创建一个已经排序的副本。
线性代数
numpy.linalg中有一组标准的矩阵分解运算以及诸如求逆和行列式之类的函数。他们跟MATLAB和R等语言所使用的是相同的行业标准级Fortran库。
| 函数 | 说明 |
|---|---|
| diag | 以一维数组的形式返回方阵的对角线(或非对角线)元素,或将一维数组转换为方阵(非对角线元素为0)。此函数在np下,并非在np.linalg下 |
| dot | 矩阵乘法 |
| trace | 计算对角线元素的和 |
| det | 计算矩阵行列式 |
| eig | 计算方阵的本征值和本征向量 |
| inv | 计算方阵的逆 |
| pinv | 计算矩阵的Moore-Penrose伪逆 |
| qr | 计算QR分解 |
| svd | 计算奇异值分解(SVD) |
| solve | 解线性方程组Ax=b,其中A为一个方阵 |
| lstsq | 计算Ax=b的最小二乘解 |
随机数生成
numpy.random模块对python内置的random进行了补充,增加了一些用于高效生成多种概率分布的样本值的函数。
| 函数 | 说明 |
|---|---|
| seed | 确定随机数生成器的种子 |
| permutation | 返回一个序列的随机排列或返回一个随机排列的范围 |
| shuffle | 对一个序列就地随机排列 |
| rand | 产生均匀分布的样本值 |
| randint | 从给定的上下限范围内随机选取整数 |
| randn | 产生正态分布(平均值为0,标准差为1)的样本值,类似于MATLAB接口 |
| binomial | 产生二项分布的样本值 |
| normal | 产生正态(高斯)分布的样本值 |
| beta | 产生Beta分布的样本值 |
| chisquare | 产生卡方分布的样本值 |
| gamma | 产生Gamma分布的样本值 |
| uniform | 产生在[0,1)中均匀分布的样本值 |
官方文档给出的函数概览
Here is a list of some useful NumPy functions and methods names ordered in categories. See Routines for the full list.
-
Array Creation
arange,array,copy,empty,empty_like,eye,fromfile,fromfunction,identity,linspace,logspace,mgrid,ogrid,ones,ones_like, r,zeros,zeros_like -
Conversions
-
Manipulations
array_split,column_stack,concatenate,diagonal,dsplit,dstack,hsplit,hstack,ndarray.item,newaxis,ravel,repeat,reshape,resize,squeeze,swapaxes,take,transpose,vsplit,vstack -
Questions
-
Ordering
-
Operations
choose,compress,cumprod,cumsum,inner,ndarray.fill,imag,prod,put,putmask,real,sum -
Basic Statistics
-
Basic Linear Algebra
cross,dot,outer,linalg.svd,vdot