如何在[0,1]之间缩放一个随机矩阵



我必须在[0,1]之间缩放一个矩阵。因此,对于矩阵中的每个元素,我必须执行这个公式:

(元素- min_cols)/(max_cols - min_cols)

min_cols→矩阵中每一列的最小值的数组。max_cols→相同的,但max

我的问题是,我想用这个计算结果:

=(元素- min_cols)/结果(max_cols - min_cols)

或者,对于矩阵中的每个元素,我必须做该元素与元素列的最小值之间的差,并做(最大元素列与最小值之间的差)。*

但是当min_cols的值为负,max_cols的值也为负时,结果是两者之和

我想指定矩阵是:_mat = np.random。randn(1000, 1000) * 50

使用numpy

例子
import numpy as np
x = 50*np.random.rand(6,4)
array([[26.7041017 , 46.88118463, 41.24541748, 31.17881807],
[47.57036124, 16.49040094,  6.62454156, 37.15976348],
[46.7157895 ,  8.53357717, 39.01399714,  5.14287858],
[24.36012016,  5.67603151, 40.7697121 , 13.09877845],
[21.69045322, 12.61989002,  8.74692768, 46.23368735],
[ 3.9058066 , 35.50845507,  4.66785679,  2.34177134]])

应用你的公式

np.divide(np.subtract(x, x.min(axis=0)), x.max(axis=0)-x.min(axis=0))
array([[0.52212361, 1.        , 1.        , 0.65700132],
[1.        , 0.26245187, 0.05349413, 0.79326663],
[0.98042871, 0.06934923, 0.93899483, 0.06381829],
[0.46844205, 0.        , 0.98699461, 0.24507946],
[0.40730168, 0.16851918, 0.1115184 , 1.        ],
[0.        , 0.7239974 , 0.        , 0.        ]])

每列的最大值映射为1,每列的最小值映射为0,中间值在0和1之间线性映射

最新更新