numpy之通用函数ufunc

通用函数-元素级数组函数

通用函数(ufunc)是一种对ndarray执行元素级运算的函数。

一元ufunc


import numpy as np
arr = np.arange(-10,10,2)
arr
Out[5]: array([-10,  -8,  -6,  -4,  -2,   0,   2,   4,   6,   8])

np.abs(arr)#绝对值
Out[7]: array([10,  8,  6,  4,  2,  0,  2,  4,  6,  8])
np.fabs(arr)#绝对值
Out[8]: array([ 10.,   8.,   6.,   4.,   2.,   0.,   2.,   4.,   6.,   8.])
  1. abs、fabs计算整数、浮点数或复数的绝对值。对于非复数值,可以使用更快的fabs。
arr1 = np.arange(16)

np.sqrt(arr1)#平方根,即arr1 ** 0.5
Out[19]: 
array([ 0.        ,  1.        ,  1.41421356,  1.73205081,  2.        ,
        2.23606798,  2.44948974,  2.64575131,  2.82842712,  3.        ,
        3.16227766,  3.31662479,  3.46410162,  3.60555128,  3.74165739,
        3.87298335])

np.square(arr1)#平方
Out[20]: 
array([  0,   1,   4,   9,  16,  25,  36,  49,  64,  81, 100, 121, 144,
       169, 196, 225], dtype=int32)

arr2 = np.exp(arr1)#各元素的指数e**x
Out[21]: 
array([  1.00000000e+00,   2.71828183e+00,   7.38905610e+00,
         2.00855369e+01,   5.45981500e+01,   1.48413159e+02,
         4.03428793e+02,   1.09663316e+03,   2.98095799e+03,
         8.10308393e+03,   2.20264658e+04,   5.98741417e+04,
         1.62754791e+05,   4.42413392e+05,   1.20260428e+06,
         3.26901737e+06])

np.log(arr2) #自然对数(底数为e)
Out[24]: 
array([  0.,   1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.,  10.,
        11.,  12.,  13.,  14.,  15.])
  1. log10,log2,log1p,其底数分别为,10,2;以及log(1+ P)
  2. singn 计算个元素正负号,1(正数),0(零),-1(负数)
np.sign(arr) #正负号
Out[25]: array([-1, -1, -1, -1, -1,  0,  1,  1,  1,  1])
  1. ceil返回大于等于该值的最小整数。
  2. floor 返回小于等于该值的最大整数。
  3. rint四舍五入,保留dtype。
  4. modf将数组的小数和整数部分一两个独立数组的形式返回。
arr3 = np.random.randn(5)

arr3
Out[27]: array([ 0.0830739 , -2.18172821,  0.77026638,  0.70735324, -1.02929973])

np.ceil(arr3)#返回>=最小整数
Out[28]: array([ 1., -2.,  1.,  1., -1.])

np.floor(arr3)#返回<=最大整数
Out[29]: array([ 0., -3.,  0.,  0., -2.])

np.rint(arr3)#四舍五入
Out[30]: array([ 0., -2.,  1.,  1., -1.])

np.modf(arr3)#拆分整数和小数
Out[31]: 
(array([ 0.0830739 , -0.18172821,  0.77026638,  0.70735324, -0.02929973]),
 array([ 0., -2.,  0.,  0., -1.]))
  1. isnan返回布尔型数组,表示哪些值是NaN(非数字)。
  2. isfinite/isinf返回布尔型数组,表示哪些元素是有穷的(非inf,非NaN)或那些是无穷的。
  3. cos,cosh,sin,sinh,tan,tanh普通型和双曲型三角函数。
  4. arccos,arccosh,arcsin,arcsinh,asrtan,arctanh反三角函数。
  5. logical_not计算个元素的not x的真值,相当于-arr。

arr4 = np.arange(-10,10,2)
np.logical_not(arr4<=0)
Out[39]: array([False, False, False, False, False, False,  True,  True,  True,  True], dtype=bool)

二元ufunc

  1. add 元素对应相加。
  2. subtract 第一个数组元素减去第二个的元素。
  3. multiply 数组元素相乘。
  4. divide,floor_divide 除法,或向下整除(丢弃余数)。
  5. power第一个数组中的元素A,第二个数组中的元素B,返回A的B次方。
arr5 = np.arange(10)

arr6 = np.arange(10,20)

np.add(arr5,arr6) #相加
Out[44]: array([10, 12, 14, 16, 18, 20, 22, 24, 26, 28])

np.subtract(arr6,arr5)#相减
Out[47]: array([10, 10, 10, 10, 10, 10, 10, 10, 10, 10])

np.multiply(arr5,arr6)#对应相乘
Out[48]: array([  0,  11,  24,  39,  56,  75,  96, 119, 144, 171])

np.divide(arr5,arr6)#相除
Out[50]: 
array([ 0.        ,  0.09090909,  0.16666667,  0.23076923,  0.28571429,
        0.33333333,  0.375     ,  0.41176471,  0.44444444,  0.47368421])

arr7 = np.arange(20,30)

np.floor_divide(arr7,arr6)#整除
Out[54]: array([2, 1, 1, 1, 1, 1, 1, 1, 1, 1], dtype=int32)

arr8 = np.arange(5)
arr9 = np.arange(5,10)

np.power(arr9,arr8)#次幂
Out[60]: array([   1,    6,   49,  512, 6561], dtype=int32)

  1. maximum,fmax返回两个数组中较大值组成的数组。fmax忽略NaN。
  2. minimum,fmin同上。
  3. mod求模,即求余数。
  4. copysign第二个数组的符号,复制给第一个数组。
x = np.random.randn(5)

y = np.random.randn(5)

x
Out[65]: array([-1.34391461,  0.58819335,  0.19195261, -0.5660927 ,  0.98594434])

y
Out[66]: array([-0.57704395, -0.40143752, -0.83931321, -0.38734544,  1.2436085 ])

np.maximum(x,y)#元素及最大值计算
Out[68]: array([-0.57704395,  0.58819335,  0.19195261, -0.38734544,  1.2436085 ])

np.minimum(x,y)#元素级最小值计算
Out[69]: array([-1.34391461, -0.40143752, -0.83931321, -0.5660927 ,  0.98594434])

m = np.arange(1,5)

n = np.arange(6,10)

np.mod(n,m)#求模
Out[83]: array([0, 1, 2, 1], dtype=int32)

np.copysign(y,x)#符号复制
Out[90]: array([-0.57704395,  0.40143752,  0.83931321, -0.38734544,  1.2436085 ])

  1. greater,greater_equal,less,less_equal,equal,not_euqal元素级比较运算,最终产生布尔型数组,相当于>,>=,<,<=,==,!=。
  2. logical_and,logical_or,logical_xor元素级真值运算,相当于&,|,^。
In [2]: x = np.arange(6)

In [3]: t = np.arange(1,13,2)

In [7]: np.greater(x,t)
Out[7]: array([False, False, False, False, False, False], dtype=bool)

In [8]: np.less_equal(x,t)
Out[8]: array([ True,  True,  True,  True,  True,  True], dtype=bool)

In [10]: np.logical_and(x > 0,t <0)
Out[10]: array([False, False, False, False, False, False], dtype=bool)

posted @ 2017-05-23 19:48  我的前进日志  阅读(1322)  评论(0编辑  收藏  举报