给定一个数组,将各列(行)归一化(缩放到 [0,1] )
方法一
import numpy as np
x = np.array([[1000, 10, 0.5],
[ 765, 5, 0.35],
[ 800, 7, 0.09]])
x_normed = x / x.max(axis=0)
print(x_normed)
# [[ 1. 1. 1. ]
# [ 0.765 0.5 0.7 ]
# [ 0.8 0.7 0.18 ]]
x.max(axis=0) 在第0维上取最大值(即每行),返回一个行向量(ncols,),包含每列的最大值,然后可以用x来除以这个向量,这样每一列的最大值就会被缩放到1。
如何确定axis的值,只需要记住axis赋值的维度是要被压缩的维度,如果要得到各列的最大值,需要压缩行这个维度。
方法二
from sklearn.preprocessing import normalize
data = np.array([
[1000, 10, 0.5],
[765, 5, 0.35],
[800, 7, 0.09], ])
data = normalize(data, axis=0, norm='max')
print(data)
>>[[ 1. 1. 1. ]
[ 0.765 0.5 0.7 ]
[ 0.8 0.7 0.18 ]]
使用 sklearn.preprocessing
参考 https://stackoverflow.com/questions/29661574/normalize-numpy-array-columns-in-python