numpy之通用函數(shù)

通用函數(shù)-元素級數(shù)組函數(shù)

通用函數(shù)(ufunc)是一種對ndarray執(zhí)行元素級運算的函數(shù)。

一元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計算整數(shù)、浮點數(shù)或復(fù)數(shù)的絕對值。對于非復(fù)數(shù)值,可以使用更快的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)#各元素的指數(shù)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) #自然對數(shù)(底數(shù)為e)
Out[24]: 
array([  0.,   1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.,  10.,
        11.,  12.,  13.,  14.,  15.])
  1. log10,log2,log1p,其底數(shù)分別為,10,2;以及l(fā)og(1+ P)
  2. singn 計算個元素正負號,1(正數(shù)),0(零),-1(負數(shù))
np.sign(arr) #正負號
Out[25]: array([-1, -1, -1, -1, -1,  0,  1,  1,  1,  1])
  1. ceil返回大于等于該值的最小整數(shù)。
  2. floor 返回小于等于該值的最大整數(shù)。
  3. rint四舍五入,保留dtype。
  4. modf將數(shù)組的小數(shù)和整數(shù)部分一兩個獨立數(shù)組的形式返回。
arr3 = np.random.randn(5)

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

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

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

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

np.modf(arr3)#拆分整數(shù)和小數(shù)
Out[31]: 
(array([ 0.0830739 , -0.18172821,  0.77026638,  0.70735324, -0.02929973]),
 array([ 0., -2.,  0.,  0., -1.]))
  1. isnan返回布爾型數(shù)組,表示哪些值是NaN(非數(shù)字)。
  2. isfinite/isinf返回布爾型數(shù)組,表示哪些元素是有窮的(非inf,非NaN)或那些是無窮的。
  3. cos,cosh,sin,sinh,tan,tanh普通型和雙曲型三角函數(shù)。
  4. arccos,arccosh,arcsin,arcsinh,asrtan,arctanh反三角函數(shù)。
  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 元素對應(yīng)相加。
  2. subtract 第一個數(shù)組元素減去第二個的元素。
  3. multiply 數(shù)組元素相乘。
  4. divide,floor_divide 除法,或向下整除(丟棄余數(shù))。
  5. power第一個數(shù)組中的元素A,第二個數(shù)組中的元素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)#對應(yīng)相乘
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返回兩個數(shù)組中較大值組成的數(shù)組。fmax忽略NaN。
  2. minimum,fmin同上。
  3. mod求模,即求余數(shù)。
  4. copysign第二個數(shù)組的符號,復(fù)制給第一個數(shù)組。
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)#符號復(fù)制
Out[90]: array([-0.57704395,  0.40143752,  0.83931321, -0.38734544,  1.2436085 ])

  1. greater,greater_equal,less,less_equal,equal,not_euqal元素級比較運算,最終產(chǎn)生布爾型數(shù)組,相當于>,>=,<,<=,==,!=。
  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)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 來源:NumPy Tutorial - TutorialsPoint 譯者:飛龍 協(xié)議:CC BY-NC-SA 4...
    布客飛龍閱讀 33,002評論 6 98
  • numpy的數(shù)據(jù)類型 使用numpy 創(chuàng)建ndarrays 數(shù)據(jù)類型使用以及轉(zhuǎn)換 ndarry 標量之間的計算? ...
    MicoCube閱讀 979評論 0 1
  • 目錄: Tab 鍵自動完成 %run命令 “Ctri-C” 中斷正在執(zhí)行的代碼 忘記輸入和輸出文本怎么辦 創(chuàng)建數(shù)組...
    鬼宇書生閱讀 808評論 0 2
  • 我一直執(zhí)著于祛臉上的斑。 我的斑是天生的。從我有記憶,它就有。 以前也許是臉上膠原蛋白多,也許是認知層面沒有重視。...
    當媽姐閱讀 979評論 8 4
  • php trait手冊 trait就是為了避免代碼重復(fù)而生 優(yōu)先級 從基類繼承的成員會被 trait 插入的成員所...
    云龍789閱讀 363評論 0 0