Numpy知識點總結-函數速查(三)
索引
【1.三角函數】 | 【2.around() 四捨五入】 | 【3.取整函數】 | 【4.角度-弧度轉化函數】 |
---|---|---|---|
【5.四則運算】 | 【6.reciprocal()求倒數】 | 【7.power()求冪】 | 【8.mod()求餘】 |
【9.最值】 | 【10.中位數】 | 【11.平均值】 | 【12.標準差與方差】 |
【13.sort()排序】 | 【14.argsort()返回升序索引】 | 【15.nonzero()返回非零索引】 | 【16.where()返回特定條件元素索引】 |
1.三角函數
參數說明:
NumPy 提供了標準的三角函數:sin()、cos()、tan()。
arcsin,arccos,和 arctan 函數返回給定角度的 sin,cos 和 tan 的反三角函數。
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]
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))
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)
print ('\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.]
2.around() 四捨五入
numpy.around(a,decimals)
參數說明:
a: 數組
decimals: 舍入的小數位數。 默認值爲0。 如果爲負,整數將四捨五入到小數點左側的位置
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.]
3.取整函數
numpy.floor()、numpy.ceil()
參數說明:
numpy.floor() 返回小於或者等於指定表達式的最大整數,即向下取整。
numpy.ceil() 返回大於或者等於指定表達式的最小整數,即向上取整。
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.]
4.角度-弧度轉化函數
numpy.degrees()
參數說明:
numpy.degrees() 函數將弧度轉換爲角度
5.四則運算
add(),subtract(),multiply() 和 divide()
參數說明:
需要注意的是數組必須具有相同的形狀或符合數組廣播規則。
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]]
6.numpy.reciprocal()求倒數
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 ]
7.power()求冪
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]
8.mod()求餘
a = 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]
9.最值
numpy.amin() 、numpy.amax()、numpy.ptp()
參數說明:
numpy.amin() 用於計算數組中的元素沿指定軸的最小值。
numpy.amax() 用於計算數組中的元素沿指定軸的最大值。
numpy.ptp()函數計算數組中元素最大值與最小值的差(最大值 - 最小值)。
a = np.array([[3,7,5],[8,4,3],[2,4,9]])
print ('我們的數組是:')
print (a)
print ('\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]
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]
10.中位數
numpy.median()
參數說明:
numpy.median() 函數用於計算數組 a 中元素的中位數(中值)
a = 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.]
11.平均數
numpy.mean()、numpy.average()
參數說明:
numpy.mean() 函數返回數組中元素的算術平均值。 如果提供了軸,則沿其計算。算術平均值是沿軸的元素的總和除以元素的數量。
numpy.average() 函數根據在另一個數組中給出的各自的權重計算數組中元素的加權平均值。
該函數可以接受一個軸參數。 如果沒有指定軸,則數組會被展開。
加權平均值即將各數值乘以相應的權數,然後加總求和得到總體值,再除以總的單位數。
考慮數組[1,2,3,4]和相應的權重[4,3,2,1],通過將相應元素的乘積相加,並將和除以權重的和,來計算加權平均值。
a = 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.]
12.標準差與方差
std=sqrt(mean((x - x.mean())* * 2))、var=mean((x - x.mean()) * * 2)
參數說明:
標準差是一組數據平均值分散程度的一種度量。標準差是方差的算術平方根。
標準差公式:std = sqrt(mean((x - x.mean()) * *2))
統計中的方差(樣本方差)是每個樣本值與全體樣本值的平均數之差的平方值的平均數,即 mean((x - x.mean()) * * 2)。
print (np.std([1,2,3,4])) # 1.1180339887498949
print (np.var([1,2,3,4])) # 1.25
13.sort()排序
numpy.sort(a, axis, kind, order)
參數說明:
a: 要排序的數組
axis: 沿着它排序數組的軸,如果沒有數組會被展開,沿着最後的軸排序, axis=0 按列排序,axis=1 按行排序
kind: 默認爲’quicksort’(快速排序),還有:‘mergesort’(歸併排序) ‘heapsort’(堆排序)
order: 如果數組包含字段,則是要排序的字段
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)]
14.argsort()返回升序索引
參數說明:
numpy.argsort() 函數返回的是數組值從小到大的索引值
x = 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], end=" ")
# 輸出
我們的數組是:
[3 1 2]
對 x 調用 argsort() 函數:
[1 2 0]
以排序後的順序重構原數組:
[1 2 3]
使用循環重構原數組
1 2 3
15.nonzero()返回非零索引
參數說明:
numpy.nonzero() 函數返回輸入數組中非零元素的索引。
a = 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]))
16.where()返回特定條件元素索引
參數說明:
numpy.where() 函數返回輸入數組中滿足給定條件的元素的索引。
x = np.arange(9.).reshape(3, 3)
print ('我們的數組是:')
print (x)
print ( '大於 3 的元素的索引:')
y = np.where(x > 3)
print (y)
print ('使用這些索引來獲取滿足條件的元素:')
print (x[y])
# 輸出
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.]