给定一个数组,将各列(行)归一化(缩放到 [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
<https://stackoverflow.com/questions/29661574/normalize-numpy-array-columns-in-python>
热门工具 换一换