一、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', '输出结果为:
[(1, 'a') (2, 'b') (3, 'c') (4, 'd')]结构化数组的排序:
arr = np.array([(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')], dtype=[('id', '输出结果为:
[(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归一化的实现方式,从而更好地应用于实际问题中。