numpy 函数库 分类整理概览
数组创建和转换
abs,absolute,arange,array,asanyarray,asarray,ascontiguousarray,asfarray,asfortranarray,atleast_1d,atleast_2d,atleast_3d,empty,empty_like,eye,full,full_like,from_dlpack,frombuffer,fromfile,fromfunction,fromiter,frompyfunc,fromregex,fromstring,identity,indices,int8,int16,int32,int64,int_,intc,intp,linspace,load,loadtxt,mgrid,ogrid,ones,ones_like,zeros,zeros_like
以下是一个表格,列出了上述NumPy函数及其简要说明:
| 函数 | 作用 |
|---|---|
abs/absolute | 计算数组元素的绝对值 |
arange | 返回等差数列数组,类似于Python的range函数 |
array | 从任何对象(如列表、元组等)创建NumPy数组 |
asanyarray | 将输入转换为NumPy数组,但不保证数据连续性或特定顺序 |
asarray | 与asanyarray类似,但如果输入已经是数组,则不复制数据 |
ascontiguousarray | 返回输入数组的连续副本(如果输入已经是连续的,则返回原始数组) |
asfarray | 将输入转换为浮点数数组(如果可能) |
asfortranarray | 返回输入数组的Fortran连续副本(如果输入已经是Fortran连续的,则返回原始数组) |
atleast_1d, atleast_2d, atleast_3d | 将输入转换为至少具有指定维度的数组 |
empty | 返回一个给定形状和类型的未初始化数组 |
empty_like | 返回一个与给定数组形状和类型相同但未初始化的数组 |
eye | 返回一个对角线为1,其余位置为0的二维数组(单位矩阵) |
full | 返回一个给定形状和类型的数组,用指定值填充 |
full_like | 返回一个与给定数组形状和类型相同并用指定值填充的数组 |
from_dlpack | 从DLPack格式的封装创建数组 |
frombuffer | 从缓冲区解释一维数组 |
fromfile | 从文件中读取数据并返回数组 |
fromfunction | 通过从给定坐标生成值来构造数组 |
fromiter | 从可迭代对象创建一维数组 |
frompyfunc | 接受一个Python函数并将其转换为ufunc |
fromregex | 从文件中读取数据,并基于正则表达式将字符串分割成数组 |
fromstring | 从字节字符串创建一维数组 |
identity | 返回一个给定大小的单位矩阵(与eye类似) |
indices | 返回表示网格索引的数组 |
int8, int16, int32, int64 | 分别创建8位、16位、32位和64位整数类型的标量或数组 |
int_, intc, intp | 分别表示平台相关的整数类型(默认整数类型、C整数类型和指针大小的整数类型) |
linspace | 返回指定间隔内的等间隔数字 |
load | 从.npy文件加载数组 |
loadtxt | 从文本文件加载数据到数组 |
mgrid | 返回网格化索引的多维数组,用于评估函数 |
ogrid | 与mgrid类似,但返回的是开放网格 |
ones | 返回一个给定形状和类型的数组,所有元素都设置为1 |
ones_like | 返回一个与给定数组形状和类型相同,所有元素都设置为1的数组 |
zeros | 返回一个给定形状和类型的数组,所有元素都设置为0 |
zeros_like | 返回一个与给定数组形状和类型相同,所有元素都设置为0的数组 |
数学运算
add,subtract,multiply,divide,floor_divide,true_divide,mod,remainder,power,exp,exp2,expm1,log,log10,log2,log1p,logaddexp,logaddexp2,sqrt,square,cbrt,ceil,floor,fix,fmax,fmin,fmod,copysign,frexp,hypot,ldexp,nextafter,rint,trunc,gcd,lcm
以下是一个表格,列出了上述NumPy函数及其简要说明:
| 函数 | 作用 |
|---|---|
add | 对数组进行逐元素相加 |
subtract | 对数组进行逐元素相减 |
multiply | 对数组进行逐元素相乘 |
divide | 对数组进行逐元素相除(整数除法,向下取整) |
floor_divide | 对数组进行逐元素相除,返回不大于结果的最大整数(向下取整除法) |
true_divide | 对数组进行逐元素相除,返回浮点数结果(真实除法) |
mod | 返回数组元素相除的余数(与%运算符类似) |
remainder | 返回数组元素相除的余数,考虑符号(与%运算符在某些情况下的行为不同) |
power | 计算数组元素的整数幂 |
exp | 计算数组元素的自然指数(e的幂) |
exp2 | 计算数组元素的2的幂 |
expm1 | 计算exp(x) - 1,对于非常小的x,这比直接计算exp(x)然后减去1更准确 |
log | 计算数组元素的自然对数(底数为e) |
log10 | 计算数组元素的以10为底的对数 |
log2 | 计算数组元素的以2为底的对数 |
log1p | 计算log(1 + x),对于非常小的x,这比直接计算log(1 + x)更准确 |
logaddexp | 计算log(exp(x1) + exp(x2)),这是一种稳定的方式,可以防止上溢 |
logaddexp2 | 计算log2(2**x1 + 2**x2),类似于logaddexp,但使用基数2 |
sqrt | 计算数组元素的平方根 |
square | 计算数组元素的平方 |
cbrt | 计算数组元素的立方根 |
ceil | 对数组元素向上取整 |
floor | 对数组元素向下取整 |
fix | 向零方向取整(类似于截断,但不改变浮点数的符号) |
fmax | 返回数组中对应元素的最大值(逐元素比较) |
fmin | 返回数组中对应元素的最小值(逐元素比较) |
fmod | 返回数组元素相除的余数,考虑符号(与%运算符在某些情况下的行为相同) |
copysign | 将第二个数组中的值的符号复制到第一个数组中的值上 |
frexp | 将数组分解为尾数和指数,使得x == mantissa * 2**exponent,其中`0.5 <= |
hypot | 计算直角三角形的斜边长度,给定两个直角边(即计算欧几里得范数) |
ldexp | 返回x * (2**i),其中x是数组,i是整数 |
nextafter | 返回两个相邻的可表示浮点数之间的值 |
rint | 对数组元素进行四舍五入到最接近的整数 |
trunc | 对数组元素向零方向截断 |
gcd | 计算两个或多个整数的最大公约数 |
lcm | 计算两个整数的最小公倍数 |
数组操作
append,concatenate,delete,insert,reshape,resize,roll,rollaxis,swapaxes,transpose,moveaxis,flatten,ravel,flip,fliplr,flipud,rot90,tile,repeat,expand_dims,broadcast_to,choose,clip,compress,extract,place,partition,sort,argsort,argpartition,argwhere,searchsorted,unique,intersect1d,setdiff1d,union1d,setxor1d,in1d,copy,copyto,pad
以下是一个表格,列出了上述NumPy函数及其简要说明:
| 函数 | 作用 |
|---|---|
append | 在数组的末尾添加值 |
concatenate | 沿指定轴连接两个或多个数组 |
delete | 删除数组指定位置的子数组 |
insert | 在数组的指定位置插入值 |
reshape | 改变数组的形状,不改变数据 |
resize | 返回指定形状的新数组,如果新形状大于原始形状,则用0填充 |
roll | 沿指定轴滚动数组元素 |
rollaxis | 将指定轴移动到新的位置 |
swapaxes | 交换数组的两个轴 |
transpose | 反转或置换数组的轴 |
moveaxis | 将数组的轴移动到新的位置 |
flatten | 将数组降为一维,返回新数组(原始数组不变) |
ravel | 返回数组的一维视图(原始数组变化会影响视图) |
flip | 反转数组元素的顺序 |
fliplr | 沿水平轴(轴1)反转数组 |
flipud | 沿垂直轴(轴0)反转数组 |
rot90 | 将数组逆时针旋转90度 |
tile | 通过重复数组来创建新的数组 |
repeat | 沿指定轴重复数组元素 |
expand_dims | 在数组的指定位置增加新的轴 |
broadcast_to | 将数组广播到新形状 |
choose | 使用给定的索引数组从多个数组中选择元素 |
clip | 将数组中的值限制在给定的最小值和最大值之间 |
compress | 使用布尔索引数组过滤数组元素 |
extract | 使用布尔索引数组从数组中提取元素 |
place | 将值放入数组的指定位置 |
partition | 对数组的元素进行部分排序,使得指定位置的元素位于排序后的正确位置 |
sort | 对数组的元素进行排序 |
argsort | 返回数组元素排序后的索引 |
argpartition | 返回数组元素部分排序后的索引 |
argwhere | 返回非零元素的索引数组 |
searchsorted | 查找排序数组中应插入元素以保持顺序的位置 |
unique | 返回数组中的唯一元素 |
intersect1d | 返回两个数组的交集 |
setdiff1d | 返回第一个数组中存在但第二个数组中不存在的元素 |
union1d | 返回两个数组的并集 |
setxor1d | 返回两个数组的对称差集 |
in1d | 测试一维数组中的元素是否也存在于另一个数组中 |
copy | 返回数组的副本 |
copyto | 将值从一个数组复制到另一个数组 |
pad | 在数组的边界填充值 |
统计和聚合
all,any,allclose,allclose,alltrue,amax,amin,argmax,argmin,average,count_nonzero,cov,corrcoef,correlate,cumprod,cumsum,gradient,mean,median,nanargmax,nanargmin,nanmean,nanmedian,nanmin,nanmax,nanstd,nansum,nanvar,percentile,prod,ptp,quantile,std,sum,var
以下是一个表格,列出了上述NumPy统计和聚合函数及其简要说明。请注意,我移除了重复的allclose函数,并添加了一些注释来解释某些函数:
| 函数 | 作用 |
|---|---|
all | 判断数组中所有元素是否都是True(或非零) |
any | 判断数组中是否存在True(或非零)元素 |
allclose | 判断两个数组是否接近相等(考虑到浮点数精度) |
amax, max | 返回数组中的最大值 |
amin, min | 返回数组中的最小值 |
argmax | 返回最大值的索引 |
argmin | 返回最小值的索引 |
average | 计算数组元素的加权平均值 |
count_nonzero | 计算数组中非零元素的数量 |
cov | 计算协方差矩阵 |
corrcoef | 计算相关系数矩阵 |
correlate | 执行一维或二维的相关操作 |
cumprod | 计算数组的累积乘积 |
cumsum | 计算数组的累积和 |
gradient | 计算n维数组的梯度 |
mean | 计算数组元素的平均值 |
median | 计算数组元素的中位数 |
nanargmax | 返回忽略NaN值的最大值的索引 |
nanargmin | 返回忽略NaN值的最小值的索引 |
nanmean | 计算忽略NaN值的数组元素的平均值 |
nanmedian | 计算忽略NaN值的数组元素的中位数 |
nanmin | 返回忽略NaN值的数组中的最小值 |
nanmax | 返回忽略NaN值的数组中的最大值 |
nanstd | 计算忽略NaN值的数组元素的标准差 |
nansum | 计算忽略NaN值的数组元素的和 |
nanvar | 计算忽略NaN值的数组元素的方差 |
percentile | 计算给定百分位数的值 |
prod | 计算数组元素的乘积 |
ptp | 计算数组元素的最大值和最小值之间的差(范围) |
quantile | 计算给定分位数的值(与percentile类似,但分位数范围通常为0到1) |
std | 计算数组元素的标准差 |
sum | 计算数组元素的和 |
var | 计算数组元素的方差 |
请注意,amax和amin有时也写作max和min,它们的功能是相同的。同样,某些函数(如correlate和gradient)可能需要额外的参数或特定的输入形状来正确执行操作。在使用这些函数时,建议查阅NumPy的官方文档以获取更详细的信息和示例。
类型和数据结构
dtype,dtypes,result_type,common_type,minimum_sctype,can_cast,cast,issubdtype,issubsctype,obj2sctype,sctype2char,sctypeDict,sctypes,typecodes,typename,ndarray,recarray,record,void
以下是一个表格,列出了上述NumPy数据类型和数组结构相关的函数及其简要说明:
| 函数/类型 | 作用 |
|---|---|
dtype | 描述数组中元素的数据类型对象。它包含用于解释数组中元素所需的信息。 |
dtypes | 通常不是一个独立的函数,而是与NumPy数组相关的属性,用于获取数组元素的数据类型。但在某些上下文中,它可能指代所有可用的数据类型。 |
result_type | 根据输入数组确定数组运算结果的数据类型。 |
common_type | 确定可以存储输入数组数据的最小数据类型。 |
minimum_sctype | 返回可以存储给定数据类型值的最小标量类型。 |
can_cast | 检查数据类型之间的转换是否安全。 |
cast | 在NumPy中,通常不直接使用cast函数,但numpy.ndarray.astype()方法用于将数组转换为指定的数据类型。 |
issubdtype | 检查第一个数据类型是否是第二个数据类型的子类型。 |
issubsctype | 与issubdtype类似,但专门用于标量类型。 |
obj2sctype | 返回一个dtype,该dtype对应于将标量对象数组安全地转换为NumPy数组所需的类型。 |
sctype2char | 返回与给定数据类型对应的字符代码。 |
sctypeDict | 返回一个字典,其键是字符代码,值是相应的数据类型。 |
sctypes | 返回NumPy支持的标量数据类型的分类字典。 |
typecodes | 返回NumPy支持的所有数据类型代码的列表。 |
typename | 返回给定数据类型的名称。 |
ndarray | NumPy的核心数据结构,一个多维数组对象。 |
recarray | 具有字段名的NumPy数组,允许通过属性而不是索引来访问元素。 |
record | 通常与recarray一起使用,表示记录数组中的单个记录。 |
void | 用于创建没有预定义意义的数据类型的数组,通常与结构化数组一起使用。 |
请注意,一些函数(如obj2sctype和sctypeDict)在较新版本的NumPy中可能不太常用或已被其他功能所取代。在编写代码时,建议查阅NumPy的官方文档以获取最准确和最新的信息。
三角函数和反三角函数
sin,cos,tan,sinh,cosh,tanh,arcsin,arccos,arctan,arctan2,arcsinh,arccosh,arctanh
以下是一个表格,列出了上述NumPy三角函数及其反函数,并说明了每个函数的作用:
| 函数 | 作用 |
|---|---|
sin | 计算正弦值。对于数组中的每个元素x(以弧度为单位),返回sin(x)。 |
cos | 计算余弦值。对于数组中的每个元素x(以弧度为单位),返回cos(x)。 |
tan | 计算正切值。对于数组中的每个元素x(以弧度为单位),返回tan(x)。 |
sinh | 计算双曲正弦值。对于数组中的每个元素x,返回sinh(x)。 |
cosh | 计算双曲余弦值。对于数组中的每个元素x,返回cosh(x)。 |
tanh | 计算双曲正切值。对于数组中的每个元素x,返回tanh(x)。 |
arcsin | 计算反正弦值(也称为反正弦或正弦的逆函数)。对于数组中的每个元素y(在-1到1之间),返回其反正弦值(以弧度为单位)。 |
arccos | 计算反余弦值(也称为反余弦或余弦的逆函数)。对于数组中的每个元素y(在-1到1之间),返回其反余弦值(以弧度为单位)。 |
arctan | 计算反正切值(也称为反正切或正切的逆函数)。对于数组中的每个元素x,返回其反正切值(以弧度为单位)。 |
arctan2 | 计算两个值的反正切值,考虑它们的符号以确定象限。它类似于笛卡尔坐标中的角度计算。 |
arcsinh | 计算反双曲正弦值(也称为双曲正弦的逆函数)。对于数组中的每个元素y,返回其反双曲正弦值。 |
arccosh | 计算反双曲余弦值(也称为双曲余弦的逆函数)。对于数组中的每个元素y(大于或等于1),返回其反双曲余弦值。 |
arctanh | 计算反双曲正切值(也称为双曲正切的逆函数)。对于数组中的每个元素y(在-1到1之间),返回其反双曲正切值。 |
窗口函数
bartlett,blackman,hamming,hanning,kaiser
以下是一个表格,列出了上述NumPy窗口函数,并说明了每个函数的作用:
| 函数 | 作用 |
|---|---|
bartlett | 生成Bartlett窗口。该窗口主要用于周期图法非周期信号分析,可以减小泄露。它呈现三角形状,两端值为0,中间值为1。 |
blackman | 生成Blackman窗口。Blackman窗口是一种具有低旁瓣的窗口函数,常用于频谱分析。其形状由三个余弦项的和构成,具有平滑的过渡。 |
hamming | 生成Hamming窗口。Hamming窗口是改进的升余弦窗,其旁瓣幅度明显小于矩形窗。它常用于减少泄漏,但会引入一些额外的吉布斯现象。 |
hanning | 生成Hanning窗口,也称为Hanning函数或升余弦窗。它类似于Hamming窗口,但系数略有不同。Hanning窗口常用于减少FFT结果中的旁瓣。 |
kaiser | 生成Kaiser窗口。Kaiser窗口是一种可调整的窗口函数,可以根据需要调整主瓣宽度和旁瓣水平。Kaiser窗口的系数由零阶贝塞尔函数计算得出。 |
这些窗口函数通常用于信号处理中,以减少频谱泄露并改善频率分辨率。不同的窗口函数具有不同的频率响应特性,适用于不同的应用场景。
线性代数
dot,matmul,inner,outer,linalg(包含了多个线性代数函数)
以下是一个表格,列出了上述NumPy数学运算和线性代数函数,并说明了每个函数的作用:
| 函数/模块 | 作用 |
|---|---|
dot | 计算两个数组的点积。对于一维数组,它等于数组元素的乘积之和;对于二维数组,它执行矩阵乘法;对于更高维度的数组,它执行点积的逐元素计算。 |
matmul | 执行矩阵乘法。与dot类似,但它支持广播,并遵循特殊的规则来处理高维数组。在Python 3.5及更高版本中,@运算符也用于矩阵乘法。 |
inner | 计算一维数组的内积。对于两个一维数组a和b,inner(a, b)等于dot(a, b)。在高维数组中,inner不执行逐元素计算,而是将数组视为向量。 |
outer | 计算两个向量的外积。对于一维数组a和b,outer(a, b)返回一个二维数组,其中第i行第j列的元素是a[i] * b[j]。 |
linalg | NumPy的线性代数模块,包含了许多用于线性代数运算的函数,如求解线性方程组、计算矩阵的行列式、逆矩阵、特征值和特征向量等。这个模块提供了许多高级功能,是数值计算和科学计算中不可或缺的一部分。 |
请注意,linalg不是一个函数,而是一个包含多个函数的模块。例如,numpy.linalg.inv()用于计算矩阵的逆,numpy.linalg.eig()用于计算矩阵的特征值和特征向量等。在使用linalg模块中的函数时,需要明确指定要调用的函数名。
其他特殊函数
angle,binary_repr,base_repr,broadcast,broadcast_arrays,broadcast_shapes,busday_count,busday_offset,busdaycalendar,char,character,chararray,compare_chararrays,complex128,complex64,complex_,complexfloating,conjugate,datetime64,datetime_as_string,datetime_data,deg2rad,degrees,diag,diag_indices,diag_indices_from,diagflat,digitize,disp,ediff1d,einsum,einsum_path,emath,euler_gamma,finfo,flatiter,flatnonzero,flipud,format_float_positional,format_float_scientific,format_parser,from_dlpack,get_array_wrap,get_include,get_printoptions,getbufsize,geterr,geterrcall,geterrobj,gradient,heaviside,i0,iinfo,imag,inexact,inf,infty,intc,intp,is_busday,isclose,iscomplex,iscomplexobj,isfinite,isfortran,isin,isinf,isnan,isnat,isneginf,isposinf,isreal,isrealobj,isscalar,issctype,issubclass_,iterable,kaiser,ldexp,lexsort,logspace,machar,mask_indices,mat,matrix,may_share_memory,newaxis,not_equal,oldnumeric,poly,poly1d,polyadd,polyder,polydiv,polyfit,polyint,polymul,polysub,polyval,positive,printoptions,promote_types,put,put_along_axis,putmask,radians,random,ravel_multi_index,real,real_if_close,rec,recfromcsv,recfromtxt,reciprocal,remainder,require,right_shift,round_,s_,safe_eval,save,savetxt,savez,savez_compressed,searchsorted,select,set_numeric_ops,set_printoptions,set_string_function,setbufsize,seterr,seterrcall,seterrobj,shares_memory,show_config,show_runtime,sign,signbit,spacing,split,squeeze,stack,str_,subtract,take,take_along_axis,tensordot,testing,timedelta64,trace,trapz,tri,tril,tril_indices,tril_indices_from,trim_zeros,triu,triu_indices,triu_indices_from,unwrap,vander,vdot,vectorize,vsplit,vstack,where,who
注意:一些函数可能属于多个类别,这里我尽量根据其主要功能进行分类。此外,像
linalg这样的模块内部包含了多个线性代数函数,这里只将其作为一个类别列出。
这些函数之所以“特殊”,是因为它们在NumPy库中提供了特定且非常有用的功能,这些功能通常是针对数值计算、数据操作、线性代数或特殊数学运算的。下面我会简要解释一些您列出的函数的特殊之处:
-
数学和数值计算函数:
angle:返回复数的相位角(以弧度为单位)。deg2rad,degrees:角度和弧度之间的转换。complex128,complex64等:定义特定精度的复数数据类型。conjugate:返回复数的共轭。logspace:在对数刻度上生成等间距的数字。poly及其相关函数:处理多项式,如加法、除法、积分等。
-
数据操作函数:
broadcast,broadcast_arrays,broadcast_shapes:处理NumPy中的广播规则,这是NumPy能够高效处理不同形状数组之间运算的关键。diag,diag_indices,diagflat:处理对角矩阵或提取对角线元素。digitize:将值映射到分桶或区间的索引。ravel,flatten:将多维数组转换为一维数组。stack,vstack,hstack:沿不同轴堆叠数组。roll,rollaxis,moveaxis:沿指定轴滚动或移动数组的元素。reshape:改变数组的形状。take,take_along_axis:根据索引选择数组的元素。
-
日期和时间函数:
datetime64:定义日期时间数据类型。busday_count,busday_offset:计算工作日数量或偏移工作日。timedelta64:定义时间间隔数据类型。
-
字符和字符串处理函数:
char,character,chararray:处理字符数组。binary_repr,base_repr:将整数转换为二进制或其他进制的字符串表示。format_float_positional,format_float_scientific:格式化浮点数的显示。
-
线性代数函数(虽然
linalg是一个模块,但列在这里以强调其特殊性):- 包含求解线性方程组、计算矩阵的行列式、特征值和特征向量等高级功能。
-
其他特殊函数:
einsum:使用爱因斯坦求和约定计算多维数组上的操作。kaiser:生成Kaiser窗口函数,常用于信号处理。isclose:判断两个浮点数是否接近相等,考虑到浮点数的精度问题。searchsorted:在已排序数组中查找插入元素的索引,以保持排序。unwrap:对相位角进行解包裹,使其连续跨越360度边界。vander:生成Vandermonde矩阵。