Numpy陣列按行或按列歸一化
阿新 • • 發佈:2019-02-13
給定一個數組,將各列(行)歸一化(縮放到 [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