zoukankan      html  css  js  c++  java
  • 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)
    
    
  • 相关阅读:
    第二次作业
    第四次作业
    第三次作业
    第二次作业
    第一次作业
    第四次作业
    第三次作业
    第二次作业
    第一次大学作业
    第四次作业
  • 原文地址:https://www.cnblogs.com/sunshinewang/p/6895749.html
Copyright © 2011-2022 走看看