1. 程式人生 > >Numpy陣列按行或按列歸一化

Numpy陣列按行或按列歸一化

給定一個數組,將各列(行)歸一化(縮放到 [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