我必须在[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之间线性映射