NumPy函數分爲字符串函數,數學算數函數,算數運算和統計函數,以及排序、搜索和計數函數。java
我們依次講解以上各種:python
1.字符串行數 api
如下函數用於對dtype
爲numpy.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]
arcsin
,arccos
,和arctan
函數返回給定角度的sin
,cos
和tan
的反三角函數。 這些函數的結果能夠經過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)
。 換句話說,標準差是方差的平方根。