通用函数
通用函数
一元函数:
函数 | 描述 |
---|---|
np.abs | 绝对值 |
np.sqrt | 开根 |
np.square | 平方 |
np.exp | 计算指数(e^x) |
np.log,np.log10,np.log2,np.log1p | 求以e为底,以10为低,以2为低,以(1+x)为底的对数 |
np.sign | 将数组中的值标签化,大于0的变成1,等于0的变成0,小于0的变成-1 |
np.ceil | 朝着无穷大的方向取整,比如5.1会变成6,-6.3会变成-6 |
np.floor | 朝着负无穷大方向取证,比如5.1会变成5,-6.3会变成-7 |
np.rint,np.round | 返回四舍五入后的值 |
np.modf | 将整数和小数分隔开来形成两个数组 |
np.isnan | 判断是否是nan |
np.isinf | 判断是否是inf |
np.cos,np.cosh,np.sin,np.sinh,np.tan,np.tanh | 三角函数 |
np.arccos,np.arcsin,np.arctan | 反三角函数 |
a = np.random.uniform(-10,10,size=(3,5))
a
# 输出
array([[-6.71149229, -2.17809525, 8.57545287, -5.31680944, -5.84956773],
[-8.57309185, -5.76927816, -9.8563885 , 2.79138433, -1.8064904 ],
[-6.96541888, -2.77797572, -6.22511018, -7.55583726, 0.24365377]])
# 1. np.abs
np.abs(a)
# 输出
array([[6.71149229, 2.17809525, 8.57545287, 5.31680944, 5.84956773],
[8.57309185, 5.76927816, 9.8563885 , 2.79138433, 1.8064904 ],
[6.96541888, 2.77797572, 6.22511018, 7.55583726, 0.24365377]])
# 2. np.sqrt
np.sqrt(a)
# 输出
array([[ nan, nan, 2.92838742, nan, nan],
[ nan, nan, nan, 1.67074364, nan],
[ nan, nan, nan, nan, 0.49361298]])
# 3. np.square
np.square(a)
# 输出
array([[4.50441288e+01, 4.74409890e+00, 7.35383919e+01, 2.82684626e+01,
3.42174426e+01],
[7.34979038e+01, 3.32845704e+01, 9.71483943e+01, 7.79182645e+00,
3.26340755e+00],
[4.85170601e+01, 7.71714912e+00, 3.87519968e+01, 5.70906766e+01,
5.93671608e-02]])
# 4. np.exp
np.exp(a)
# 输出
array([[1.21684688e-03, 1.13257052e-01, 5.29995109e+03, 4.90838930e-03,
2.88114432e-03],
[1.89126993e-04, 3.12201031e-03, 5.24112914e-05, 1.63035736e+01,
1.64229507e-01],
[9.43967446e-04, 6.21642176e-02, 1.97910575e-03, 5.23048034e-04,
1.27590250e+00]])
# 5. np.log
np.log(a)
# 输出
array([[ nan, nan, 2.1489038 , nan, nan],
[ nan, nan, nan, 1.02653765, nan],
[ nan, nan, nan, nan, -1.41200703]])
# 6. np.sign
np.sign(a)
# 输出
array([[-1., -1., 1., -1., -1.],
[-1., -1., -1., 1., -1.],
[-1., -1., -1., -1., 1.]])
# 7. np.ceil
np.ceil(a)
# 输出
array([[-6., -2., 9., -5., -5.],
[-8., -5., -9., 3., -1.],
[-6., -2., -6., -7., 1.]])
# 8. np.floor
np.floor(a)
# 输出
array([[ -7., -3., 8., -6., -6.],
[ -9., -6., -10., 2., -2.],
[ -7., -3., -7., -8., 0.]])
# 8. np.rint或者np.round
np.rint(a)
# 输出
array([[ -7., -2., 9., -5., -6.],
[ -9., -6., -10., 3., -2.],
[ -7., -3., -6., -8., 0.]])
# 9. np.modf
np.modf(a)[1]
# 输出
array([[-6., -2., 8., -5., -5.],
[-8., -5., -9., 2., -1.],
[-6., -2., -6., -7., 0.]])
# 10. np.sin
np.sin(a)
# 输出
array([[-0.41533131, -0.82119239, 0.7508348 , 0.82283158, 0.42015632],
[-0.75239214, 0.49158346, 0.41833419, 0.3430935 , -0.9723525 ],
[-0.63052822, -0.35565699, 0.05804249, -0.95588322, 0.24125008]])
二元函数:
函数 | 描述 |
---|---|
np.add | 加法运算(即1+1=2),相当于+ |
np.subtract | 减法运算(即3-2=1),相当于- |
np.negative | 负数运算(即-2),相当于加个负号 |
np.multiply | 乘法运算(即2*3=6),相当于* |
np.divide | 除法运算(即3/2=1.5),相当于/ |
np.floor_divide | 取整运算,相当于// |
np.mod | 取余运算,相当于% |
greater,greater_equal,less,less_equal,equal,not_equal | >,>=,<,<=,=,!=的函数表达式 |
logical_and | &的函数表达式 |
logical_or | |的函数表达式 |
a+1
# 输出
array([[-5.71149229, -1.17809525, 9.57545287, -4.31680944, -4.84956773],
[-7.57309185, -4.76927816, -8.8563885 , 3.79138433, -0.8064904 ],
[-5.96541888, -1.77797572, -5.22511018, -6.55583726, 1.24365377]])
np.add(a,np.random.randint(0,5,size=(3,1)))
# 输出
array([[-4.71149229, -0.17809525, 10.57545287, -3.31680944, -3.84956773],
[-6.57309185, -3.76927816, -7.8563885 , 4.79138433, 0.1935096 ],
[-5.96541888, -1.77797572, -5.22511018, -6.55583726, 1.24365377]])
# a[a > 0]
a[np.greater(a,0)]
# 输出
array([8.57545287, 2.79138433, 0.24365377])
# a[(a > 0) & (a < 5)]
a[np.logical_and(a>0,a<5)]
# 输出
array([2.79138433, 0.24365377])
# a[(a > 5) | (a < 0)]
a[np.logical_or(a>5,a<0)]
# 输出
array([-6.71149229, -2.17809525, 8.57545287, -5.31680944, -5.84956773,
-8.57309185, -5.76927816, -9.8563885 , -1.8064904 , -6.96541888,
-2.77797572, -6.22511018, -7.55583726])
聚合函数:
函数名称 | NAN安全版本 | 描述 |
---|---|---|
np.sum | np.nansum | 计算元素的和 |
np.prod | np.nanprod | 计算元素的积 |
np.mean | np.nanmean | 计算元素的平均值 |
np.std | np.nanstd | 计算元素的标准差 |
np.var | np.nanvar | 计算元素的方差 |
np.min | np.nanmin | 计算元素的最小值 |
np.max | np.nanmax | 计算元素的最大值 |
np.argmin | np.nanargmin | 找出最小值的索引 |
np.argmax | np.nanargmax | 找出最大值的索引 |
np.median | np.nanmedian | 计算元素的中位数 |
使用np.sum
或者是a.sum
即可实现。并且在使用的时候,可以指定具体哪个轴。同样Python
中也内置了sum
函数,但是Python内置的sum
函数执行效率没有np.sum
那么高,可以通过以下代码测试了解到:
a = np.random.rand(1000000)
%timeit sum(a) #使用Python内置的sum函数求总和,看下所花费的时间
%timeit np.sum(a) #使用Numpy的sum函数求和,看下所花费的时间
布尔数组的函数:
函数名称 | 描述 |
---|---|
np.any | 验证任何一个元素是否为真 |
np.all | 验证所有元素是否为真 |
比如想看下数组中是不是所有元素都为0,那么可以通过以下代码来实现:
np.all(a==0)
# 或者是
(a==0).all()
比如我们想要看数组中是否有等于0的数,那么可以通过以下代码来实现:
np.any(a==0)
# 或者是
(a==0).any()
排序:
-
np.sort
:指定轴进行排序。默认是使用数组的最后一个轴进行排序。a = np.random.randint(0,10,size=(3,5)) b = np.sort(a) #按照行进行排序,因为最后一个轴是1,那么就是将最里面的元素进行排序。 c = np.sort(a,axis=0) #按照列进行排序,因为指定了axis=0
还有
ndarray.sort()
,这个方法会直接影响到原来的数组,而不是返回一个新的排序后的数组。 -
np.argsort
:返回排序后的下标值。示例代码如下:np.argsort(a) #默认也是使用最后的一个轴来进行排序。
-
降序排序:
np.sort
默认会采用升序排序。如果我们想采用降序排序。那么可以采用以下方案来实现:# 1. 使用负号 -np.sort(-a) # 2. 使用sort和argsort以及take indexes = np.argsort(-a) #排序后的结果就是降序的 np.take(a,indexes) #从a中根据下标提取相应的元素
其他函数补充:
-
np.apply_along_axis
:沿着某个轴执行指定的函数。示例代码如下:# 求数组a按行求均值,并且要去掉最大值和最小值。 np.apply_along_axis(lambda x:x[(x != x.max()) & (x != x.min())].mean(),axis=1,arr=a)
-
np.linspace
:用来将指定区间内的值平均分成多少份。示例代码如下:# 将0-1分成12分,生成一个数组 np.linspace(0,1,12)
-
np.unique
:返回数组中的唯一值。# 返回数组a中的唯一值,并且会返回每个唯一值出现的次数。 np.unique(a,return_counts=True)
# 1. apply_along_axis:
c = np.random.randint(0,100,size=(3,20))
c
# 输出
array([[31, 1, 69, 3, 92, 95, 47, 61, 51, 15, 41, 63, 27, 88, 30, 49,
90, 93, 21, 89],
[82, 39, 25, 20, 15, 88, 83, 91, 83, 61, 10, 0, 33, 11, 36, 95,
50, 54, 41, 27],
[11, 71, 17, 66, 83, 30, 26, 10, 26, 58, 29, 28, 86, 57, 29, 49,
57, 31, 74, 35]])
# def get_mean(x):
# y = x[np.logical_and(x!=x.max(),x!=x.min())].mean()
# return y
np.apply_along_axis(lambda x:x[np.logical_and(x!=x.max(),x!=x.min())].mean(),axis=0,arr=c)
# 输出
array([31., 39., 25., 20., 83., 88., 47., 61., 51., 58., 29., 28., 33.,
57., 30., nan, 57., 54., 41., 35.])
np.linspace(0,1,10)
# 输出
array([0. , 0.11111111, 0.22222222, 0.33333333, 0.44444444,
0.55555556, 0.66666667, 0.77777778, 0.88888889, 1. ])
d = np.random.randint(0,10,size=(3,5))
d
# 输出
array([[8, 0, 1, 0, 7],
[4, 9, 7, 3, 3],
[4, 0, 9, 4, 0]])
np.unique(d,return_counts=True)
# 输出
(array([0, 1, 3, 4, 7, 8, 9]), array([4, 1, 2, 3, 2, 1, 2], dtype=int64))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能