numpy相關知識總結(NumPy基礎教程五站在巨人的肩膀上思考問題)
2023-04-29 19:25:12 1
numpy相關知識總結?#頭條創作挑戰賽#以下函數用於對 dtype 為 numpy.string_ 或 numpy.unicode_ 的數組執行向量化字符串操作 它們基於 Python 內置庫中的標準字符串函數,我來為大家科普一下關於numpy相關知識總結?以下內容希望對你有幫助!
numpy相關知識總結
#頭條創作挑戰賽#
Numpy 字符串函數以下函數用於對 dtype 為 numpy.string_ 或 numpy.unicode_ 的數組執行向量化字符串操作。 它們基於 Python 內置庫中的標準字符串函數。
numpy.char.addnumpy.char.add 函數依次對兩個數組的元素進行字符串連接。
import numpy as npprint("連接兩個字符串:")print(np.char.add(['hello'],[' rainNight']))
連接兩個字符串:['hello rainNight']
numpy.char.multiplynumpy.char.multiply 函數執行多重連接。
import numpy as npprint(np.char.multiply('RainNight ',4))
RainNight RainNight RainNight RainNight
numpy.char.centernumpy.char.center 函數用於將字符串居中,並使用指定字符在左側和右側進行填充。
import numpy as np# str: 字符串,width: 長度,fillchar: 填充字符print (np.char.center('RainNight', 25,fillchar = ' '))
RainNight
numpy.char.capitalizenumpy.char.capitalize 函數將字符串的第一個字母轉換為大寫:
import numpy as npprint (np.char.capitalize('rainNight'))
Rainnight
numpy.char.titlenumpy.char.title 函數將字符串的每個單詞的第一個字母轉換為大寫:
import numpy as npprint (np.char.title('i like GEEK'))
I Like Geek
numpy.char.lowernumpy.char.lower 函數對數組的每個元素轉換為小寫。它對每個元素調用 str.lower。
import numpy as np#操作數組print (np.char.lower(['RAINNIGHT','GEEK']))# 操作字符串print (np.char.lower('RAINNIGHT'))
['rainnight' 'geek']rainnight
numpy.char.uppernumpy.char.upper 函數對數組的每個元素轉換為大寫。它對每個元素調用 str.upper。
import numpy as np#操作數組print (np.char.upper(['rainnight','geek']))# 操作字符串print (np.char.upper('rainnight'))
['RAINNIGHT' 'GEEK']RAINNIGHT
numpy.char.splitnumpy.char.split 通過指定分隔符對字符串進行分割,並返回數組。默認情況下,分隔符為空格。
import numpy as np # 分隔符默認為空格print (np.char.split ('i like geek?'))# 分隔符為 .print (np.char.split ('www.nerearn.top', sep = '.'))
['i', 'like', 'geek?']['www', 'nerearn', 'top']
numpy.char.splitlinesnumpy.char.splitlines 函數以換行符作為分隔符來分割字符串,並返回數組。
import numpy as np # 換行符 \nprint (np.char.splitlines('i\nlike geek?')) print (np.char.splitlines('i\rlike geek?'))
['i', 'like geek?']['i', 'like geek?']
numpy.char.stripnumpy.char.strip 函數用於移除開頭或結尾處的特定字符。
import numpy as np # 移除字符串頭尾的 a 字符print (np.char.strip('rain night char','a'))# 移除數組元素頭尾的 a 字符print (np.char.strip(['rain','run','char'],'r'))
rain night char['ain' 'un' 'cha']
numpy.char.joinnumpy.char.join 函數通過指定分隔符來連接數組中的元素或字符串
import numpy as np # 操作字符串print (np.char.join(':','rainNight'))# 指定多個分隔符操作數組元素print (np.char.join([':','-'],['rainNight','geek']))
r:a:i:n:N:i:g:h:t['r:a:i:n:N:i:g:h:t' 'g-e-e-k']
numpy.char.replacenumpy.char.replace 函數使用新字符串替換字符串中的所有子字符串。
import numpy as np print (np.char.replace ('i like geek', 'ee', 'oo'))
i like gook
numpy.char.encodenumpy.char.encode 函數對數組中的每個元素調用 str.encode 函數。 默認編碼是 utf-8,可以使用標準 Python 庫中的編解碼器。
import numpy as np a = np.char.encode('geek', 'cp500') print (a)
b'\x87\x85\x85\x92'
numpy.char.decodenumpy.char.decode 函數對編碼的元素進行 str.decode 解碼。
import numpy as np a = np.char.encode('geek', 'cp500') print (a)print (np.char.decode(a,'cp500'))
b'\x87\x85\x85\x92'geek
NumPy 數學函數NumPy 包含大量的各種數學運算的函數,包括三角函數,算術運算的函數,複數處理函數等。
三角函數NumPy 提供了標準的三角函數:sin、cos、tan。
import numpy as npa = np.array([0,30,45,60,90])print ('不同角度的正弦值:')# 通過乘 pi/180 轉化為弧度 print (np.sin(a*np.pi/360))print ('\n')print ('數組中角度的餘弦值:')print (np.cos(a*np.pi/360))print ('\n')print ('數組中角度的正切值:')print (np.tan(a*np.pi/360))
不同角度的正弦值:[0. 0.25881905 0.38268343 0.5 0.70710678]數組中角度的餘弦值:[1. 0.96592583 0.92387953 0.8660254 0.70710678]數組中角度的正切值:[0. 0.26794919 0.41421356 0.57735027 1. ]
arcsin,arccos,和 arctan 函數返回給定角度的 sin,cos 和 tan 的反三角函數。
這些函數的結果可以通過 numpy.degrees 函數將弧度轉換為角度。
import numpy as npa = np.array([0,30,45,60,90]) print ('含有正弦值的數組:')sin = np.sin(a*np.pi/180) print (sin)brprint ('\n')print ('計算角度的反正弦,返回值以弧度為單位:')inv = np.arcsin(sin) print (inv)print ('\n')print ('通過轉化為角度制來檢查結果:')print (np.degrees(inv))print ('\n')print ('arccos 和 arctan 函數行為類似:')cos = np.cos(a*np.pi/180) print (cos)print ('\n')print ('反餘弦:')inv = np.arccos(cos) print (inv)print ('\n')print ('角度制單位:')print (np.degrees(inv))print ('\n')print ('tan 函數:')tan = np.tan(a*np.pi/180) print (tan)brprint ('\n')print ('反正切:')inv = np.arctan(tan) 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.]arccos 和 arctan 函數行為類似:[1.00000000e 00 8.66025404e-01 7.07106781e-01 5.00000000e-01 6.12323400e-17]反餘弦:[0. 0.52359878 0.78539816 1.04719755 1.57079633]角度制單位:[ 0. 30. 45. 60. 90.]tan 函數:[0.00000000e 00 5.77350269e-01 1.00000000e 00 1.73205081e 00 1.63312394e 16]反正切:[0. 0.52359878 0.78539816 1.04719755 1.57079633]角度制單位:[ 0. 30. 45. 60. 90.]
雨夜的博客--數學工具:向量運算、冪指運算、N次方計算器、三角函數運算、在線分解質因數計算器
捨入函數numpy.around 函數返回指定數字的四捨五入值。
numpy.around(a,decimals)
import numpy as npa = 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.]
numpy.floornumpy.floor 返回小於或者等於指定表達式的最大整數,即向下取整。
import numpy as npa = np.array([-1.7, 1.5, -0.2, 0.6, 10])print ('提供的數組:')print (a)print ('\n')print ('修改後的數組:')print (np.floor(a))
提供的數組:[-1.7 1.5 -0.2 0.6 10. ]修改後的數組:[-2. 1. -1. 0. 10.]
numpy.ceilnumpy.ceil 返回大於或者等於指定表達式的最小整數,即向上取整。
import numpy as npa = np.array([-1.7, 1.5, -0.2, 0.6, 10]) print ('提供的數組:')print (a)print ('\n')print ('修改後的數組:')print (np.ceil(a))
提供的數組:[-1.7 1.5 -0.2 0.6 10. ]修改後的數組:[-1. 2. -0. 1. 10.]
NumPy 算術函數NumPy 算術函數包含簡單的加減乘除: add,subtract,multiply 和 divide。
需要注意的是數組必須具有相同的形狀或符合數組廣播規則。
import numpy as np a = np.arange(9, dtype = np.float_).reshape(3,3) print ('第一個數組:')print (a)print ('\n')print ('第二個數組:')b = np.array([10,10,10]) print (b)print ('\n')print ('兩個數組相加:')print (np.add(a,b))print ('\n')print ('兩個數組相減:')print (np.subtract(a,b))print ('\n')print ('兩個數組相乘:')print (np.multiply(a,b))print ('\n')print ('兩個數組相除:')print (np.divide(a,b))
第一個數組:[[0. 1. 2.] [3. 4. 5.] [6. 7. 8.]]第二個數組:[10 10 10]兩個數組相加:[[10. 11. 12.] [13. 14. 15.] [16. 17. 18.]]兩個數組相減:[[-10. -9. -8.] [ -7. -6. -5.] [ -4. -3. -2.]]兩個數組相乘:[[ 0. 10. 20.] [30. 40. 50.] [60. 70. 80.]]兩個數組相除:[[0. 0.1 0.2] [0.3 0.4 0.5] [0.6 0.7 0.8]]
此外 Numpy 也包含了其他重要的算術函數。
向量運算
numpy.reciprocalnumpy.reciprocal 函數返回參數逐元素的倒數。如 1/4 倒數為 4/1。
import numpy as np a = np.array([0.25, 1.33, 1, 100]) print ('我們的數組是:')print (a)print ('\n')print ('調用 reciprocal 函數:')print (np.reciprocal(a))
我們的數組是:[ 0.25 1.33 1. 100. ]調用 reciprocal 函數:[4. 0.7518797 1. 0.01 ]
numpy.powernumpy.power 函數將第一個輸入數組中的元素作為底數,計算它與第二個輸入數組中相應元素的冪。
import numpy as np a = np.array([10,100,1000]) print ('我們的數組是;')print (a)print ('\n') print ('調用 power 函數:')print (np.power(a,2))print ('\n')print ('第二個數組:')b = np.array([1,2,3]) print (b)print ('\n')print ('再次調用 power 函數:')print (np.power(a,b))
我們的數組是;[ 10 100 1000]調用 power 函數:[ 100 10000 1000000]第二個數組:[1 2 3]再次調用 power 函數:[ 10 10000 1000000000]
numpy.modnumpy.mod 計算輸入數組中相應元素的相除後的餘數。 函數 numpy.remainder 也產生相同的結果。
import numpy as npa = np.array([10,20,30]) b = np.array([3,5,7]) print ('第一個數組:')print (a)print ('\n')print ('第二個數組:')print (b)print ('\n')print ('調用 mod 函數:')print (np.mod(a,b))print ('\n')print ('調用 remainder 函數:')print (np.remainder(a,b))
第一個數組:[10 20 30]第二個數組:[3 5 7]調用 mod 函數:[1 0 2]調用 remainder 函數:[1 0 2]
雨夜的博客--數學工具:向量運算、冪指運算、N次方計算器、三角函數運算、在線分解質因數計算器
NumPy 統計函數NumPy 提供了很多統計函數,用於從數組中查找最小元素,最大元素,百分位標準差和方差等。 函數說明如下:
numpy.amin 和 numpy.amax
numpy.amin 用於計算數組中的元素沿指定軸的最小值。
numpy.amax 用於計算數組中的元素沿指定軸的最大值。
import numpy as np a = np.array([[3,7,5],[8,4,3],[2,4,9]]) print ('我們的數組是:')print (a)brprint ('\n')print ('調用 amin 函數:')print (np.amin(a,1))print ('\n')print ('再次調用 amin 函數:')print (np.amin(a,0))print ('\n')print ('調用 amax 函數:')print (np.amax(a))print ('\n')print ('再次調用 amax 函數:')print (np.amax(a, axis = 0))
我們的數組是:[[3 7 5] [8 4 3] [2 4 9]]調用 amin 函數:[3 3 2]再次調用 amin 函數:[2 4 3]調用 amax 函數:9再次調用 amax 函數:[8 7 9]
numpy.ptpnumpy.ptp函數計算數組中元素最大值與最小值的差(最大值 - 最小值)。
import numpy as np a = np.array([[3,7,5],[8,4,3],[2,4,9]]) print ('我們的數組是:')print (a)print ('\n')print ('調用 ptp 函數:')print (np.ptp(a))print ('\n')print ('沿軸 1 調用 ptp 函數:')print (np.ptp(a, axis = 1))print ('\n')print ('沿軸 0 調用 ptp 函數:')print (np.ptp(a, axis = 0))
我們的數組是:[[3 7 5] [8 4 3] [2 4 9]]調用 ptp 函數:7沿軸 1 調用 ptp 函數:[4 5 7]沿軸 0 調用 ptp 函數:[6 3 6]
numpy.percentile百分位數是統計中使用的度量,表示小於這個值的觀察值的百分比。 函數numpy.percentile接受以下參數。
numpy.percentile(a, q, axis)
import numpy as npa = np.array([[10, 7, 4], [3, 2, 1]])print ('我們的數組是:')print (a)print ('調用 percentile 函數:')# 50% 的分位數,就是 a 裡排序之後的中位數print (np.percentile(a, 50)) # axis 為 0,在縱列上求print (np.percentile(a, 50, axis=0)) # axis 為 1,在橫行上求print (np.percentile(a, 50, axis=1)) # 保持維度不變print (np.percentile(a, 50, axis=1, keepdims=True))
我們的數組是:[[10 7 4] [ 3 2 1]]調用 percentile 函數:3.5[6.5 4.5 2.5][7. 2.][[7.] [2.]]
numpy.mediannumpy.median 函數用於計算數組 a 中元素的中位數(中值)
import numpy as npa = np.array([[30,65,70],[80,95,10],[50,90,60]]) print ('我們的數組是:')print (a)print ('\n')print ('調用 median 函數:')print (np.median(a))print ('\n')print ('沿軸 0 調用 median 函數:')print (np.median(a, axis = 0))print ('\n')print ('沿軸 1 調用 median 函數:')print (np.median(a, axis = 1))
我們的數組是:[[30 65 70] [80 95 10] [50 90 60]]調用 median 函數:65.0沿軸 0 調用 median 函數:[50. 90. 60.]沿軸 1 調用 median 函數:[65. 80. 60.]
numpy.meannumpy.mean 函數返回數組中元素的算術平均值。 如果提供了軸,則沿其計算。
算術平均值是沿軸的元素的總和除以元素的數量。
import numpy as npa = np.array([[1,2,3],[3,4,5],[4,5,6]]) print ('我們的數組是:')print (a)print ('\n')print ('調用 mean 函數:')print (np.mean(a))print ('\n')print ('沿軸 0 調用 mean 函數:')print (np.mean(a, axis = 0))print ('\n')print ('沿軸 1 調用 mean 函數:')print (np.mean(a, axis = 1))
我們的數組是:[[1 2 3] [3 4 5] [4 5 6]]調用 mean 函數:3.6666666666666665沿軸 0 調用 mean 函數:[2.66666667 3.66666667 4.66666667]沿軸 1 調用 mean 函數:[2. 4. 5.]
numpy.averagenumpy.average 函數根據在另一個數組中給出的各自的權重計算數組中元素的加權平均值。
該函數可以接受一個軸參數。 如果沒有指定軸,則數組會被展開。
加權平均值即將各數值乘以相應的權數,然後加總求和得到總體值,再除以總的單位數。
考慮數組[1,2,3,4]和相應的權重[4,3,2,1],通過將相應元素的乘積相加,並將和除以權重的和,來計算加權平均值。
import numpy as np a = np.array([1,2,3,4]) print ('我們的數組是:')print (a)print ('\n')print ('調用 average 函數:')print (np.average(a))print ('\n')# 不指定權重時相當於 mean 函數wts = np.array([4,3,2,1]) print ('再次調用 average 函數:')print (np.average(a,weights = wts))print ('\n')# 如果 returned 參數設為 true,則返回權重的和 print ('權重的和:')print (np.average([1,2,3, 4],weights = [4,3,2,1], returned = True))
我們的數組是:[1 2 3 4]調用 average 函數:2.5再次調用 average 函數:2.0權重的和:(2.0, 10.0)
在多維數組中,可以指定用於計算的軸。
import numpy as np a = np.arange(6).reshape(3,2) print ('我們的數組是:')print (a)print ('\n')print ('修改後的數組:')wt = np.array([3,5]) print (np.average(a, axis = 1, weights = wt))print ('\n')print ('修改後的數組:')print (np.average(a, axis = 1, weights = wt, returned = True))br
我們的數組是:[[0 1] [2 3] [4 5]]修改後的數組:[0.625 2.625 4.625]修改後的數組:(array([0.625, 2.625, 4.625]), array([8., 8., 8.]))
標準差標準差是一組數據平均值分散程度的一種度量。
標準差是方差的算術平方根。
標準差公式如下:
std = sqrt(mean((x - x.mean)**2))
import numpy as np print (np.std([1,2,3,4]))
1.118033988749895
方差統計中的方差(樣本方差)是每個樣本值與全體樣本值的平均數之差的平方值的平均數,即 mean((x - x.mean)** 2)。
換句話說,標準差是方差的平方根。
import numpy as npprint (np.var([1,2,3,4]))
1.25
NumPy 排序、條件刷選函數NumPy 提供了多種排序的方法。 這些排序函數實現不同的排序算法,每個排序算法的特徵在於執行速度,最壞情況性能,所需的工作空間和算法的穩定性。 下表顯示了三種排序算法的比較。
numpy.sortnumpy.sort 函數返回輸入數組的排序副本。
numpy.sort(a, axis, kind, order)
import numpy as np a = np.array([[3,7],[9,1]]) print ('我們的數組是:')print (a)print ('\n')print ('調用 sort 函數:')print (np.sort(a))print ('\n')print ('按列排序:')print (np.sort(a, axis = 0))print ('\n')# 在 sort 函數中排序欄位 dt = np.dtype([('name', 'S10'),('age', int)]) a = np.array([("raju",21),("anil",25),("ravi", 17), ("amar",27)], dtype = dt) print ('我們的數組是:')print (a)print ('\n')print ('按 name 排序:')print (np.sort(a, order = 'name'))
我們的數組是:[[3 7] [9 1]]調用 sort 函數:[[3 7] [1 9]]按列排序:[[3 1] [9 7]]我們的數組是:[(b'raju', 21) (b'anil', 25) (b'ravi', 17) (b'amar', 27)]按 name 排序:[(b'amar', 27) (b'anil', 25) (b'raju', 21) (b'ravi', 17)]
numpy.argsortnumpy.argsort 函數返回的是數組值從小到大的索引值。
import numpy as npx = np.array([3, 1, 2]) print ('我們的數組是:')print (x)print ('\n')print ('對 x 調用 argsort 函數:')y = np.argsort(x) print (y)print ('\n')print ('以排序後的順序重構原數組:')print (x[y])print ('\n')print ('使用循環重構原數組:')for i in y: print (x[i],)
我們的數組是:[3 1 2]對 x 調用 argsort 函數:[1 2 0]以排序後的順序重構原數組:[1 2 3]使用循環重構原數組:1 2 3
numpy.lexsortnumpy.lexsort 用於對多個序列進行排序。把它想像成對電子表格進行排序,每一列代表一個序列,排序時優先照顧靠後的列。
import numpy as np nm = ('raju','anil','ravi','amar') dv = ('f.y.', 's.y.', 's.y.', 'f.y.') ind = np.lexsort((dv,nm)) print ('調用 lexsort 函數:') print (ind) print ('\n') print ('使用這個索引來獲取排序後的數據:') print ([nm[i] ", " dv[i] for i in ind])
調用 lexsort 函數:[3 1 0 2]使用這個索引來獲取排序後的數據:['amar, f.y.', 'anil, s.y.', 'raju, f.y.', 'ravi, s.y.']
numpy.argmax 和 numpy.argminnumpy.argmax 和 numpy.argmin函數分別沿給定軸返回最大和最小元素的索引。
import numpy as np a = np.array([[30,40,70],[80,20,10],[50,90,60]]) print ('我們的數組是:') print (a) print ('\n') print ('調用 argmax 函數:') print (np.argmax(a)) print ('\n') print ('展開數組:') print (a.flatten) print ('\n') print ('沿軸 0 的最大值索引:') maxindex = np.argmax(a, axis = 0) print (maxindex) print ('\n') print ('沿軸 1 的最大值索引:') maxindex = np.argmax(a, axis = 1) print (maxindex) print ('\n') print ('調用 argmin 函數:') minindex = np.argmin(a) print (minindex) print ('\n') print ('展開數組中的最小值:') print (a.flatten[minindex]) print ('\n') print ('沿軸 0 的最小值索引:') minindex = np.argmin(a, axis = 0) print (minindex) print ('\n') print ('沿軸 1 的最小值索引:') minindex = np.argmin(a, axis = 1) print (minindex)
我們的數組是:[[30 40 70] [80 20 10] [50 90 60]]調用 argmax 函數:7展開數組:[30 40 70 80 20 10 50 90 60]沿軸 0 的最大值索引:[1 2 0]沿軸 1 的最大值索引:[2 0 1]調用 argmin 函數:5展開數組中的最小值:10沿軸 0 的最小值索引:[0 1 1]沿軸 1 的最小值索引:[0 2 0]
numpy.nonzeronumpy.nonzero 函數返回輸入數組中非零元素的索引。
import numpy as npa = np.array([[30,40,0],[0,20,10],[50,0,60]])print ('我們的數組是:')print (a)print ('\n')print ('調用 nonzero 函數:')print (np.nonzero (a))
我們的數組是:[[30 40 0] [ 0 20 10] [50 0 60]]調用 nonzero 函數:(array([0, 0, 1, 1, 2, 2]), array([0, 1, 1, 2, 0, 2]))
numpy.wherenumpy.where 函數返回輸入數組中滿足給定條件的元素的索引。
import numpy as np x = np.arange(9.).reshape(3, 3) print ('我們的數組是:')print (x)print ( '大於 3 的元素的索引:')y = np.where(x > 3) print (y)print ('使用這些索引來獲取滿足條件的元素:')print (x[y])
我們的數組是:[[0. 1. 2.] [3. 4. 5.] [6. 7. 8.]]大於 3 的元素的索引:(array([1, 1, 2, 2, 2]), array([1, 2, 0, 1, 2]))使用這些索引來獲取滿足條件的元素:[4. 5. 6. 7. 8.]
numpy.extractnumpy.extract 函數根據某個條件從數組中抽取元素,返回滿條件的元素。
import numpy as np x = np.arange(9.).reshape(3, 3) print ('我們的數組是:')print (x)# 定義條件, 選擇偶數元素condition = np.mod(x,2) == 0 print ('按元素的條件值:')print (condition)print ('使用條件提取元素:')print (np.extract(condition, x))
我們的數組是:[[0. 1. 2.] [3. 4. 5.] [6. 7. 8.]]按元素的條件值:[[ True False True] [False True False] [ True False True]]使用條件提取元素:[0. 2. 4. 6. 8.]
,