通用函数是一种对ndarry
中的数据执行元素级运算的函数,可以看作是简单函数(接受一个或多个标量值,并产生一个或多个标量值)的矢量化包装器。
函数 | 描述 |
---|---|
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 | 反三角函数 |
abs
计算整数丶浮点数或复数的绝对值。对于非复数值,可以使用更快的fabs
>>> import numpy as np
>>> np.abs(12)
12
>>> np.abs(-14)
14
>>> np.abs(13.0)
13.0
>>> np.abs(13.02)
13.02
>>> np.abs(12+5j)
13.0
>>> np.abs(12-5j)
13.0
>>> np.abs(12- 5j)
13.0
>>>
sqrt
计算各元素的平方根
>>> np.sqrt(4)
2.0
>>> np.sqrt(-4)
<stdin>:1: RuntimeWarning: invalid value encountered in sqrt
nan
>>> np.sqrt(5)
2.23606797749979
>>>
square
计算各元素的平方
>>> np.square(2)
4
>>> np.square(-2)
4
>>> np.square(1.1)
1.2100000000000002
exp
计算各元素的指数(e^x)
>>> import numpy as np
>>> np.exp(4)
54.598150033144236
>>> np.exp(1)
2.718281828459045
>>> np.exp(2)
7.38905609893065
# python3还有个函数为exp2,计算的是2的指数
>>> np.exp2(2)
4.0
log
log
、log10
、log2
、log1p
分别为自然对数(底数为e)、底数为10的log、底数为2的log、log(1+x)
>>> np.log(2)
0.6931471805599453
>>> np.log(4)
1.3862943611198906
>>> np.log10(10)
1.0
>>> np.log10(0.1)
-1.0
>>> np.log2(2)
1.0
>>> np.log2(4)
2.0
>>> np.log2(0.4)
-1.3219280948873622
>>> np.log1p(1.21)
0.7929925155296614
>>> np.log1p(9)
2.302585092994046
>>>
sign
计算各元素的正负号:1(正数)丶0(零)丶-1(负数)
>>> np.sign(12)
1
>>> np.sign(0)
0
>>> np.sign(-1)
-1
>>> np.sign(-14.5)
-1.0
>>> np.sign(114.5)
1.0
>>> np.sign(0.0)
0.0
ceil
计算各元素的ceiling值,即大于等于该值的最小整数
>>> np.ceil(1.1)
2.0
>>> np.ceil(2.0)
2.0
>>> np.ceil(-2.0)
-2.0
>>> np.ceil(-1.3)
-1.0
>>> np.ceil(-2.4)
-2.0
floor
计算各元素的floor值,即小于等于该值的最大整数
>>> np.floor(0)
0.0
>>> np.floor(1.8)
1.0
>>> np.floor(-1.5)
-2.0
round/rint
将各元素四舍五入到最接近的整数,保留dtype
>>> np.round(1.1)
1.0
>>> np.rint(1.1)
1.0
>>> np.rint(1.7)
2.0
>>> np.round(1.7)
2.0
>>> np.round(-1.7)
-2.0
>>> np.rint(-1.7)
-2.0
modf
将数组的小数和整数部分以两个独立数组的形式返回
>>> np.modf([1.3, -2.5, 3.0])
(array([ 0.3, -0.5, 0. ]), array([ 1., -2., 3.]))
>>> np.modf([1.32, -2.05, 3.00])
(array([ 0.32, -0.05, 0. ]), array([ 1., -2., 3.]))
isnan
返回一个表示"哪些值是NaN(这不是一个数字)"的布尔型数组
>>> np.isnan(0.0)
False
>>> np.isnan(0.)
False
>>> np.isnan("NaN")
Traceback (most recent call last):
File "" , line 1, in <module>
TypeError: ufunc 'isnan' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
isinf/isfinite
分别返回一个表示"哪些元素是无穷的的布尔型数组" 或 “哪些元素是有穷的(非inf,非NaN)”
>>> np.isfinite(1/3)
True
>>> np.isinf(1/3)
False
>>> np.isinf(1/2)
False
>>> np.isfinite(1/2)
True
np.cos,np.cosh,np.sin,np.sinh,np.tan,np.tanh
三角函数
>>> np.cos(0)
1.0
>>> np.cosh(0)
1.0
>>> pi=3.14
>>> np.sin(np.pi/2.)
1.0
>>> np.sinh(np.pi/2.)
2.3012989023072947
>>> np.tan(0)
0.0
>>> np.tanh(0)
0.0
np.arccos,np.arcsin,np.arctan
反三角函数
>>> np.arccos(1.0)
0.0
>>> np.arcsin(1.0)
1.5707963267948966
>>> np.arctan(0)
0.0
函数 | 描述 |
---|---|
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 | |的函数表达式 |
logical_not | 逻辑非 |
add
加法
>>> import numpy as np
>>> a=np.array([1, 2, 3])
>>> a
array([1, 2, 3])
>>> b=np.array([4, 5, 6])
>>> b
array([4, 5, 6])
>>> np.add(a, b)
array([5, 7, 9])
subtract
减法
>>> import numpy as np
>>> a=np.array([1, 2, 3])
>>> a
array([1, 2, 3])
>>> b=np.array([4, 5, 6])
>>> b
array([4, 5, 6])
>>> np.subtract(b, a)
array([3, 3, 3])
>>> np.subtract(a, b)
array([-3, -3, -3])
negative
取负,相当于加’-’
>>> import numpy as np
>>> a=np.array([1, 2, 3])
>>> a
array([1, 2, 3])
>>> b=np.array([4, 5, 6])
>>> b
array([4, 5, 6])
>>> np.negative(a)
array([-1, -2, -3])
>>> np.negative(b)
array([-4, -5, -6])
multiply
乘法
>>> import numpy as np
>>> a=np.array([1, 2, 3])
>>> a
array([1, 2, 3])
>>> b=np.array([4, 5, 6])
>>> b
array([4, 5, 6])
>>> np.multiply(a, b)
array([ 4, 10, 18])
divide
除法,相当于’/’
>>> a=np.array([4, 6, 9, 12])
>>> a
array([ 4, 6, 9, 12])
>>> b=np.array([2, 3, 4, 5])
>>> np.divide(a, b)
array([2, 2, 2, 2])
>>> c=np.array([2, 3, 3, 2])
>>> c
array([2, 3, 3, 2])
>>> np.divide(a, c)
array([2, 2, 3, 6])
>>>
floor_divide
取整运算,相当于’//’
>>> a=np.array([4, 6, 9, 12])
>>> b=np.array([2, 3, 4, 5])
>>> c=np.array([2, 3, 3, 2])
>>> np.floor_divide(a, b)
array([2, 2, 2, 2])
>>> np.floor_divide(a, c)
array([2, 2, 3, 6])
mod
取余运算,相当于’%’
>>> a=np.array([4, 6, 9, 12])
>>> b=np.array([2, 3, 4, 5])
>>> c=np.array([2, 3, 3, 2])
>>> np.mod(a, b)
array([0, 0, 1, 2])
>>> np.mod(a, c)
array([0, 0, 0, 0])
greater,greater_equal,less,less_equal,equal,not_equal
,>=,<,<=,=,!=的函数表达式
>>> a=np.array([1, 2, 3, 4 ])
>>> b=np.array([4, 5, 6, 4])
>>> np.greater(a, b)
array([False, False, False, False])
>>> np.greater_equal(a, b)
array([False, False, False, True])
>>> np.less(a, b)
array([ True, True, True, False])
>>> np.less_equal(a, b)
array([ True, True, True, True])
>>> np.equal(a, b)
array([False, False, False, True])
>>> np.not_equal(a, b)
array([ True, True, True, False])
logical_and,logical_or,logical_not
逻辑与、或、非
>>> np.logical_and(True, False)
False
>>> np.logical_and([True, False], [False, False])
array([False, False])
>>> x = np.arange(5)
>>> np.logical_and(x>1, x<4)
array([False, False, True, True, False])
>>> np.logical_or(True, False)
True
>>> np.logical_or([True, False], [False, False])
array([ True, False])
>>> x = np.arange(5)
>>> np.logical_or(x < 1, x > 3)
array([ True, False, False, False, True])
>>> np.logical_not(3)
False
>>> np.logical_not([True, False, 0, 1])
array([False, True, True, False])
>>> x = np.arange(5)
>>> np.logical_not(x<3)
array([False, False, False, True, True])
函数名称 | 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 | 计算元素的中位数 |
sum
计算元素的和
>>> a=np.array([1, 3, 5])
>>> np.sum(a)
9
prod
计算元素的积
>>> a=np.array([1, 3, 5])
>>> np.prod(a)
15
mean
计算元素的平均值
>>> a=np.array([1, 3, 5])
>>> np.mean(a)
3.0
std
计算元素的标准差
>>> a=np.array([1, 3, 5])
>>> np.std(a)
1.632993161855452
var
计算元素的方差
>>> a=np.array([1, 3, 5])
>>> np.var(a)
2.6666666666666665
min
计算元素的最小值
>>> a=np.array([1, 3, 5])
>>> np.min(a)
1
max
计算元素的最小值
>>> a=np.array([1, 3, 5])
>>> np.max(a)
5
argmin
找出最小值的索引
>>> a=np.array([1, 3, 5])
>>> np.argmin(a)
0
argmax
找出最大值的索引
>>> a=np.array([1, 3, 5])
>>> np.argmax(a)
2
median
计算元素的中位数
>>> a=np.array([1, 3, 5])
>>> np.median(a)
3.0
np.any
验证任何一个元素是否为真
>>> a=np.array([0, 0, 0])
>>> np.any(a==0)
True
>>> b=np.array([1, 1, 1])
>>> np.any(b==0)
False
>>> np.any(b==1)
True
np.all
验证所有元素是否为真
>>> np.all(a==0)
True
>>> np.all(b==1)
True
>>> np.all(b==0)
False
>>> c=np.array([0, 1, 0])
>>> np.any(c==0)
True
>>> np.all(c==0)
False
>>> np.any(c==1)
True
>>> np.all(c==1)
False
np.sort
指定轴进行排序,默认是使用数组的最后一个轴进行排序
>>> a=np.array([(16, 14, 89),(17, 67, 98 ),(21, 34, 20)])
>>> a
array([[16, 14, 89],
[17, 67, 98],
[21, 34, 20]])
>>> a=np.array([[16, 14, 89],[17, 67, 98 ],[21, 34, 20]])
>>> a
array([[16, 14, 89],
[17, 67, 98],
[21, 34, 20]])
>>> np.sort(a)
array([[14, 16, 89],
[17, 67, 98],
[20, 21, 34]])
>>> np.sort(a, axis=0) #按照列进行排序,因为指定了axis=0
array([[16, 14, 20],
[17, 34, 89],
[21, 67, 98]])
np.argsort
返回排序后的下标值
>>> a=np.array([(16, 14, 89),(17, 67, 98 ),(21, 34, 20)])
>>> a
array([[16, 14, 89],
[17, 67, 98],
[21, 34, 20]])
>>> np.sort(a)
array([[14, 16, 89],
[17, 67, 98],
[20, 21, 34]])
>>> np.argsort(a)
array([[1, 0, 2],
[0, 1, 2],
[2, 0, 1]])
np.sort默认会采用升序排序,可以使用-np.sort(-a)
实现降序
>>> a=np.array([(16, 14, 89),(17, 67, 98 ),(21, 34, 20)])
>>> a
array([[16, 14, 89],
[17, 67, 98],
[21, 34, 20]])
>>> np.sort(a)
array([[14, 16, 89],
[17, 67, 98],
[20, 21, 34]])
>>> -np.sort(-a)
array([[89, 16, 14],
[98, 67, 17],
[34, 21, 20]])
函数 | 描述 |
---|---|
rand | 产生n个随机数组(0到1之间的数) |
randint | 产生一个指定范围内的随机整数,(a,b) 生成值a= |
choice | 随机选择数组中一个数 |
shuffle | 把数组序列打乱,重新组合 |
uniform | 获取更大范围内(相比rand )浮点型数组 |
rand
产生n个随机数组(0到1之间的数)
>>> np.random.rand(3)
array([0.33182353, 0.59096579, 0.353353 ])
>>> np.random.rand(4)
array([0.76854013, 0.89397436, 0.45293351, 0.00541298])
>>> np.random.rand(2)
array([0.11746056, 0.59730736])
randint
产生一个指定范围内的随机整数,(a,b)
生成值a=
>>> np.random.randint(3)
0
>>> np.random.randint(1,3)
1
>>> np.random.randint(1,3)
2
>>> np.random.randint(1,3)
2
>>> np.random.randint(1,3)
1
>>> np.random.randint(1,3)
2
>>> np.random.randint(1,3)
2
>>> np.random.randint(1,3)
1
>>> np.random.randint(1,2)
1
>>> np.random.randint(1,2)
1
>>> np.random.randint(1,2)
1
>>> np.random.randint(1,2)
1
>>> np.random.randint(1,2)
1
choice
随机选择数组中一个数
>>> np.random.choice([1,3, 9, 13])
13
>>> np.random.choice([1,3, 9, 13])
9
>>> np.random.choice([1,3, 9, 13])
13
>>> np.random.choice([1,3, 9, 13])
9
>>> np.random.choice([1,3, 9, 13])
1
>>> np.random.choice([1,3, 9, 13])
13
shuffle
把数组序列打乱,重新组合
>>> a=np.arange(10)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> np.random.shuffle(a)
>>> a
array([6, 1, 8, 3, 2, 9, 4, 5, 0, 7])
>>> a
array([6, 1, 8, 3, 2, 9, 4, 5, 0, 7])
>>> np.random.shuffle(a)
>>> a
array([3, 5, 9, 4, 1, 6, 8, 2, 0, 7])
uniform
获取更大范围内(相比rand
)浮点型数组
>>> np.random.uniform()
0.7187235478658701
>>> np.random.uniform()
0.5633589179442539
>>> np.random.uniform(low=2,high=3)
2.993127402309656
>>> np.random.uniform(low=2,high=3)
2.409017601561471
>>> np.random.uniform(low=2,high=3,size=(2,2))
array([[2.17256592, 2.98800888],
[2.51134462, 2.04196065]])
>>> np.random.uniform(low=2,high=3,size=(2,2))
array([[2.7433721 , 2.13060859],
[2.27125088, 2.5522496 ]])
1、https://blog.csdn.net/qq_34988996/article/details/119997966
2、https://www.cnblogs.com/catxjd/p/9795079.html
3、https://blog.csdn.net/weixin_40426830/article/details/109959142
4、https://blog.csdn.net/BaoITcore/article/details/125273828
5、https://blog.csdn.net/weixin_39289876/article/details/104514585