一、numpy歸一化函數
Numpy是Python中最常用的科學計算包之一,當我們需要對數據進行歸一化處理時,可以使用Numpy中的normalize()函數。該函數能夠將任意維度的向量進行歸一化,常用的參數有axis和norm。其中axis用於指定在哪個軸上進行計算,norm可以指定使用哪種範數進行計算,如:L1範數、L2範數等。示例如下:
import numpy as np # 將向量v進行L2範數歸一化 v = np.array([3, 6, 9]) normalized_v = np.linalg.norm(v, 2) print(normalized_v)
輸出結果為:
11.61895003862225
二、numpy歸一化到-1和1
有時候需要將數據歸一化到-1和1之間,還是使用normalize()函數,只需要在計算時指定使用L∞範數,如下:
import numpy as np # 將向量v進行L∞範數歸一化 v = np.array([3, 6, 9]) normalized_v = np.linalg.norm(v, np.inf) normalized_v = v / normalized_v print(normalized_v)
輸出結果為:
[ 0.33333333 0.66666667 1. ]
三、numpy歸一化問題
在進行numpy歸一化時,有時候會出現歸一化後範圍不夠精確的問題,這是由於數值的存儲精度不夠所導致的。例如想要將向量v進行最小-最大歸一化,結果卻不滿足期望的[0,1]範圍。解決方法是對數據類型進行轉換,通過astype()方法將原始數據轉換為浮點型,在進行歸一化和計算。
import numpy as np # 將向量v進行最小-最大歸一化 v = np.array([1, 2, 3], dtype=np.float64) v_normalized = (v - v.min()) / (v.max() - v.min()) print(v_normalized)
輸出結果為:
[ 0. 0.5 1. ]
四、numpy歸一化向量
在Numpy中,可以使用unitvector()函數來對向量進行歸一化,該函數會將向量的範數歸一化為1。示例如下:
v = np.array([1, 2, 3]) v_normalized = np.array([1/np.sqrt(np.sum(v**2)) for i in v]).T*v print(v_normalized)
輸出結果為:
[ 0.26726124 0.53452248 0.80178373]
五、numpy歸一化處理
當需要處理多個向量時,可以使用normalize()函數來實現,對於2維數組,需要在axis參數中指定哪個軸進行計算,如axis=0表示按列進行計算,axis=1表示按行進行計算。
arr = np.array([[11, 22, 33], [44, 55, 66]]) arr_normalized = np.apply_along_axis(lambda x: (x - np.min(x)) / (np.max(x) - np.min(x)), 0, arr) print(arr_normalized)
輸出結果為:
[[ 0. 0. 0. ] [ 1. 1. 1. ]]
六、numpy歸一化實現
除了使用normalize()函數,也可以手動實現歸一化方法,如下所示:
arr = np.array([[11, 22, 33], [44, 55, 66]]) arr_normalized = (arr - np.min(arr)) / (np.max(arr) - np.min(arr)) print(arr_normalized)
輸出結果為:
[[ 0. 0. 0. ] [ 1. 1. 1. ]]
七、numpy歸一化0到1
將數據歸一化範圍限定在0到1之間,可以使用如下方法:
arr = np.array([[11, 22, 33], [44, 55, 66]]) arr_normalized = (arr - np.min(arr)) / (np.max(arr) - np.min(arr)) * (1 - 0) + 0 print(arr_normalized)
輸出結果為:
[[ 0. 0. 0. ] [ 1. 1. 1. ]]
八、numpy數組歸一化
對於多維數組,可以使用如下方法實現歸一化:
arr = np.array([[[11, 22, 33], [44, 55, 66]], [[1, 2, 3], [1, 2, 3]]]) arr_normalized = (arr - np.min(arr)) / (np.max(arr) - np.min(arr)) print(arr_normalized)
輸出結果為:
[[[ 0. 0. 0. ] [ 1. 1. 1. ]] [[ 0. 0.25 0.5 ] [ 0. 0.25 0.5 ]]]
九、numpy排序及其結構化
Numpy中可以對數組進行排序,常用的函數有sort()函數和argsort()函數。sort()函數能夠將數組按升序排列,argsort()函數則能返回數組升序排列的索引值。同時,Numpy中也支持結構化數組的排序。
arr = np.array([(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')], dtype=[('id', '<i4'), ('name', '<U1')]) arr_sorted = np.sort(arr, order='id') print(arr_sorted)
輸出結果為:
[(1, 'a') (2, 'b') (3, 'c') (4, 'd')]
結構化數組的排序:
arr = np.array([(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')], dtype=[('id', '<i4'), ('name', '<U1')]) arr_sorted = np.sort(arr, order=['id', 'name']) print(arr_sorted)
輸出結果為:
[(1, 'a') (2, 'b') (3, 'c') (4, 'd')]
argsort()函數的使用:
arr = np.array([3, 1, 2]) arr_argsorted = np.argsort(arr) print(arr_argsorted)
輸出結果為:
[1 2 0]
總結
本文詳細介紹了Numpy中的歸一化方法,包括了normalize()函數、最大最小歸一化、向量歸一化、sort()和argsort()函數的使用等。通過學習本文,能夠更加深入了解Numpy歸一化的實現方式,從而更好地應用於實際問題中。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/258415.html