NumPy-----函數

NumPy函數分爲字符串函數,數學算數函數,算數運算和統計函數,以及排序、搜索和計數函數。java

我們依次講解以上各種:python

1.字符串行數 api

 如下函數用於對dtypenumpy.string_numpy.unicode_的數組執行向量化字符串操做。這些函數在字符數組類(numpy.char)中定義。numpy.char類中的函數在執行向量化字符串操做時很是有用。數組

 (1).np.char.add()---------------函數執行按元素的字符串鏈接。ide

import numpy as np 
print ('鏈接兩個字符串:' )
print (np.char.add(['hello'],[' xyz']) )
print ('\n')

print ('鏈接示例:' )
print (np.char.add(['hello', 'hi'],[' abc', ' xyz']))

輸出:函數

鏈接兩個字符串:
['hello xyz']


鏈接示例:
['hello abc' 'hi xyz']

(2).np.char.multiply()----------這個函數執行多重鏈接。編碼

print (np.char.multiply('Hello ',3))

輸出:spa

Hello Hello Hello

(3).np.char.center()------此函數返回所需寬度的數組,以便輸入字符串位於中心,並使用fillchar在左側和右側進行填充。code

print (np.char.center('hello', 20,fillchar = '*'))

輸出:blog

*******hello********

(4).np.char.capitalize()-------函數返回字符串的副本,其中第一個字母大寫

print (np.char.capitalize('hello world'))

輸出:

Hello world

(5).np.char.title()-------返回輸入字符串的按元素標題轉換版本,其中每一個單詞的首字母都大寫。

print (np.char.title('hello how are you?'))

輸出:

Hello How Are You?

(6).np.char.upper()/lower()-----------函數返回一個數組,其元素轉換爲大寫/小寫。它對每一個元素調用str.upper/str.lower。

print (np.char.upper('hello') )
print (np.char.upper(['hello','world']))

輸出:

HELLO
['HELLO' 'WORLD']

(7).np.char.split()--------此函數返回輸入字符串中的單詞列表。 默認狀況下,空格用做分隔符。 不然,指定的分隔符字符用於分割字符串。

 

print( np.char.split ('hello how are you?') )
print( np.char.split ('YiibaiPoint,Hyderabad,Telangana', sep = ','))

輸出:

['hello', 'how', 'are', 'you?']
['YiibaiPoint', 'Hyderabad', 'Telangana']

(8).np.char.splitlines()----返回單詞列表,以換行符分割

print( np.char.splitlines('hello\nhow are you?') )

輸出:

['hello', 'how are you?']

'\n''\r''\r\n'都會用做換行符。

 (9).np.char.strip()----函數返回數組的副本,其中元素移除了開頭或結尾處的特定字符。

print (np.char.strip('ashok arora','a') )
print (np.char.strip(['arora','admin','java'],'a'))

輸出:

shok aror
['ror' 'dmin' 'jav']

(10).np.char.join()---這個函數返回一個字符串,其中單個字符由特定的分隔符鏈接。

print (np.char.join(':','dmy') )
print (np.char.join([':','-'],['dmy','ymd']))

輸出:

d:m:y
['d:m:y' 'y-m-d']

(11).np.char.replace()---這個函數返回字符串副本,其中全部字符序列的出現位置都被另外一個給定的字符序列取代。

print (np.char.replace ('He is a good boy', 'is', 'was'))

輸出:

He was a good boy

(12).np.char.encode()/decode()-----編碼和解碼

a = (np.char.encode('hello', 'cp500') )
print (a)

print( np.char.decode(a,'cp500'))

輸出:

\x88\x85\x93\x93\x96
hello

2.算數函數

 NumPy 提供標準的三角函數,算術運算的函數,複數處理函數等。

(1)三角函數---它爲弧度制單位的給定角度返回三角函數比值

 

import numpy as np
a = np.array([0,30,45,60,90])  
print  ('不一樣角度的正弦值:'  )
# 經過乘 pi/180 轉化爲弧度  
print (np.sin(a*np.pi/180)  )
print  ('\n'  )
print  ('數組中角度的餘弦值:'  )
print (np.cos(a*np.pi/180)  )
print  ('\n'  )
print  ('數組中角度的正切值:'  )
print (np.tan(a*np.pi/180))

 

輸出:

不一樣角度的正弦值:
[ 0.          0.5         0.70710678  0.8660254   1.        ]


數組中角度的餘弦值:
[  1.00000000e+00   8.66025404e-01   7.07106781e-01   5.00000000e-01
   6.12323400e-17]


數組中角度的正切值:
[  0.00000000e+00   5.77350269e-01   1.00000000e+00   1.73205081e+00
   1.63312394e+16]

arcsinarccos,和arctan函數返回給定角度的sincostan的反三角函數。 這些函數的結果能夠經過numpy.degrees()函數經過將弧度制轉換爲角度制來驗證。

a = np.array([0,30,45,60,90])  
print ( '含有正弦值的數組:')
sin = np.sin(a*np.pi/180)  
print (sin)
print  ('\n' ) 
print  ('計算角度的反正弦,返回值以弧度爲單位:')
inv = np.arcsin(sin)  
print (inv)
print ( '\n'  )
print  ('經過轉化爲角度制來檢查結果:'  )
print( np.degrees(inv)  )

輸出:

含有正弦值的數組:
[ 0.          0.5         0.70710678  0.8660254   1.        ]
計算角度的反正弦,返回值以弧度製爲單位:
[ 0.          0.52359878  0.78539816  1.04719755  1.57079633]

經過轉化爲角度制來檢查結果:
[  0.  30.  45.  60.  90.]

2.舍入函數

(1)np.around()---這個函數返回四捨五入到所需精度的值

 

a = np.array([1.0,5.55,  123,  0.567,  25.532])  
print  ('原數組:'  )
print (a)
print  ('\n'  )
print  ('舍入後:')  
print (np.around(a)  )
print( np.around(a, decimals =  1)  )
print (np.around(a, decimals =  -1))

 

輸出:

原數組:                                                          
[   1.       5.55   123.       0.567   25.532]

舍入後:                                                         
[   1.    6.   123.    1.   26. ]                                               
[   1.    5.6  123.    0.6  25.5]                                          
[   0.    10.  120.    0.   30. ]

(2).np.floor()----此函數返回不大於輸入參數的最大整數。 即標量x 的下限是最大的整數i ,使得i <= x

(3).np.ceil()----返回輸入值的上限,即,標量x的上限是最小的整數i ,使得i> = x

a = np.array([-1.7,  1.5,  -0.2,  0.6,  10])  
print  ('提供的數組:'  )
print (a)
print  ('\n')  
print  ('修改後的數組:'  )
print (np.floor(a))
print('----------')
print (np.ceil(a))

輸出:

提供的數組:                                                            
[ -1.7   1.5  -0.2   0.6  10. ]

修改後的數組:                                                         
[ -2.   1.  -1.   0.  10.]
------------
[ -1.   2.  -0.   1.  10.]

3.算數運算

執行算術運算(如 加add(),減subtract(),乘multiply()和除divide())的輸入數組必須具備相同的形狀或符合數組廣播規則。 A S M D是基本運用。

   算數函數:

(1)np.reciprocal()----返回參數逐元素的倒數

 

a = np.array([25,  1.33,  1,  0,  100]) 
print (np.reciprocal(a) ) 

 

輸出:

[ 0.04       0.7518797  1.               inf  0.01     ]
 RuntimeWarning: divide by zero encountered in reciprocal

(2).np.power()----將第一個輸入數組中的元素做爲底數,計算它與第二個輸入數組中相應元素的冪

a = np.array([10,100,1000]) 
b = np.array([1,2,3])
print( np.power(a,b))

輸出:

[        10      10000 1000000000]

(3)np.mod()----返回輸入數組中相應元素的除法餘數。 函數numpy.remainder()也產生相同的結果

a = np.array([10,20,30]) 
b = np.array([3,5,7])
print( np.mod(a,b) )  
print (np.remainder(a,b))

輸出:

[1 0 2]
                                              
[1 0 2]

(4)如下函數用於對含有複數的數組執行操做

  • numpy.real() 返回複數類型參數的實部。

  • numpy.imag() 返回複數類型參數的虛部。

  • numpy.conj() 返回經過改變虛部的符號而得到的共軛複數。(即虛部變爲相反數)

  • numpy.angle() 返回複數參數的角度。 函數的參數是degree。 若是爲true,返回的角度以角度制來表示,不然爲以弧度制來表示。

 

 

a = np.array([-5.6j,  0.2j,  11.  ,  1+1j])  
print  ('咱們的數組是:'  )
print (a )
print  ('\n'  )
print ( '調用 real() 函數:'  )
print (np.real(a)  )
print ( '\n'  )
print  ('調用 imag() 函數:'  )
print (np.imag(a)  )
print  ('\n'  )
print  ('調用 conj() 函數:'  )
print (np.conj(a)  )
print  ('\n'  )
print ( '調用 angle() 函數:'  )
print( np.angle(a)  )
print  ('\n'  )
print ( '再次調用 angle() 函數(以角度制返回):'  )
print (np.angle(a, deg =  True))

輸出:

咱們的數組是:
[ -0.-5.6j   0.+0.2j  11.+0.j    1.+1.j ]


調用 real() 函數:
[ -0.   0.  11.   1.]


調用 imag() 函數:
[-5.6  0.2  0.   1. ]


調用 conj() 函數:
[ -0.+5.6j   0.-0.2j  11.-0.j    1.-1.j ]


調用 angle() 函數:
[-1.57079633  1.57079633  0.          0.78539816]


再次調用 angle() 函數(以角度制返回):
[-90.  90.   0.  45.]

4.統計函數

 用於從數組中給定的元素中查找最小,最大,百分標準差和方差等

(1)np.amin()/np.amax()----從給定數組中的元素沿指定軸返回最小值和最大值。

默認是全部元素選取,若是指明瞭axis,則返回對應的軸數組。如:

a = np.array([[3,7,5],[8,4,3],[2,4,9]])  
print(np.amin(a,0))
print(np.amax(a))
print(np.amax(a,axis=0))

輸出:

[2 4 3]

9

[8 7 9]

(2)np.ptp()----返回沿軸的值的範圍(最大值 - 最小值)

a = np.array([[3,7,5],[8,4,3],[2,4,9]]) 
print(a)
print('--------------')
print(np.ptp(a))
print('--------------')

print(np.ptp(a,axis=1))
print('-------------')
print(np.ptp(a,axis=0))

輸出:

[[3 7 5]
 [8 4 3]
 [2 4 9]]
--------------
7
--------------
[4 5 7]
-------------
[6 3 6]

(3)np.percentile()----百分位數是統計中使用的度量,表示小於這個值得觀察值佔某個百分比

設一個序列供有n個數,要求(k%)的Percentile: 
      (1)從小到大排序,求(n-1)*k%,記整數部分爲i,小數部分爲j 
      (2)所求結果=(1-j)*第(i+1)個數+j*第(i+2)個數 

a = np.array([[30,40,70],[80,20,10],[50,90,60]])  
print(a)
print('--------------------------------')
print(np.percentile(a,50))
print('------------------------------')
print(np.percentile(a,50,axis=1))

輸出:

[[30 40 70]
 [80 20 10]
 [50 90 60]]
--------------------------------
50.0
------------------------------
[ 40.  20.  60.]

(4)np.median()----中值定義爲將數據樣本的上半部分與下半部分分開的值

(5)np.mean()----算術平均值是沿軸的元素的總和除以元素的數量

(6)np.average()----加權平均值是由每一個份量乘以反映其重要性的因子獲得的平均值。

  考慮數組[1,2,3,4]和相應的權重[4,3,2,1],經過將相應元素的乘積相加,並將和除以權重的和,來計算加權平均值。

加權平均值 = (1*4+2*3+3*2+4*1)/(4+3+2+1)
a = np.array([10,2,3,4])  
print (a)   
print  ('調用 average() 函數:'  )
print (np.average(a)  )  
# 不指定權重時至關於 mean 函數
wts = np.array([4,3,2,1])  
print  ('再次調用 average() 函數:'  )
print (np.average(a,weights = wts)  )
  
# 若是 returned 參數設爲 true,則返回權重的和  
print  ('權重的和:'  )
print (np.average([1,2,3,  4],weights =  [4,3,2,1], returned =  True))

輸出:

[10  2  3  4]
調用 average() 函數:
4.75
再次調用 average() 函數:
5.6
權重的和:
(2.0, 10.0)

5.標準差和方差

標準差是與均值的誤差的平方的平均值的平方根。 標準差公式以下:

std = sqrt(mean((x - x.mean())**2))

方差是誤差的平方的平均值,即    mean((x - x.mean())** 2)  。 換句話說,標準差是方差的平方根

相關文章
相關標籤/搜索