如何将 numpy 数组中的值标准化为 0 到 1 之间


要将 NumPy 数组的值标准化为 0 到 1 之间,可以使用以下方法之一:

方法一:使用NumPy

 import numpy as np

x_norm = (x-np. min (x))/(np. max (x)-np. min (x))

方法2:使用Sklearn

 from sklearn import preprocessing as pre

x = x. reshape (-1, 1)

x_norm = pre. MinMaxScaler (). fit_transform (x)

两种方法都假设x是要标准化的 NumPy 数组的名称。

以下示例展示了如何在实践中使用每种方法。

示例 1:使用 NumPy 标准化值

假设我们有以下 NumPy 数组:

 import numpy as np

#create NumPy array
x = np. array ([13, 16, 19, 22, 23, 38, 47, 56, 58, 63, 65, 70, 71])

我们可以使用以下代码将数组中的每个值标准化为 0 到 1 之间:

 #normalize all values to be between 0 and 1
x_norm = (x-np. min (x))/(np. max (x)-np. min (x))

#view normalized array
print (x_norm)

[0. 0.05172414 0.10344828 0.15517241 0.17241379 0.43103448
 0.5862069 0.74137931 0.77586207 0.86206897 0.89655172 0.98275862
 1. ]

NumPy 数组中的每个值都已标准化为 0 到 1 之间。

它是这样工作的:

数据集中的最小值为 13,最大值为 71。

为了标准化13的第一个值,我们将应用之前共享的公式:

  • z i = ( xi – 最小值(x)) / (最大值(x) – 最小值(x)) = (13 – 13) / (71 – 13) = 0

为了标准化16的第二个值,我们将使用相同的公式:

  • z i = ( xi – 最小值(x)) / (最大值(x) – 最小值(x)) = (16 – 13) / (71 – 13) = 0.0517

为了标准化第三个值19 ,我们将使用相同的公式:

  • z i = ( xi – 最小值(x)) / (最大值(x) – 最小值(x)) = (19 – 13) / (71 – 13) = 0.1034

我们使用相同的公式将原始 NumPy 数组中的每个值标准化为 0 到 1 之间。

示例2:使用sklearn标准化值

再次假设我们有以下 NumPy 数组:

 import numpy as np

#create NumPy array
x = np. array ([13, 16, 19, 22, 23, 38, 47, 56, 58, 63, 65, 70, 71])

我们可以使用sklearnMinMaxScaler()函数将数组中的每个值标准化为 0 到 1 之间:

 from sklearn import preprocessing as pre

#reshape array so that it works with sklearn
x = x. reshape (-1, 1)

#normalize all values to be between 0 and 1
x_norm = pre. MinMaxScaler (). fit_transform (x)

#view normalized array
print (x_norm)

[[0. ]
 [0.05172414]
 [0.10344828]
 [0.15517241]
 [0.17241379]
 [0.43103448]
 [0.5862069]
 [0.74137931]
 [0.77586207]
 [0.86206897]
 [0.89655172]
 [0.98275862]
 [1. ]]

NumPy 数组中的每个值都已标准化为 0 到 1 之间。

请注意,这些归一化值与使用先前方法计算的值相匹配。

其他资源

以下教程解释了如何在 NumPy 中执行其他常见任务:

如何对 NumPy 数组中的元素进行排序
如何从 NumPy 数组中删除重复元素
如何找到 NumPy 数组中出现次数最多的值

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注