python中如何更新矩阵中的列_python – 如何缩放矩阵的每一列

这篇博客介绍了如何使用NumPy库对矩阵的每一列进行缩放,使其值介于-1和1之间。首先,通过减去列的最小值使每列的最小值为0,然后除以列的最大值与最小值之差,使每列最大值为1。最后,将结果乘以2再减去1,即可得到介于-1和1的缩放矩阵。此外,还提到了使用sklearn库的MinMaxScaler方法实现相同的操作。
摘要由CSDN通过智能技术生成

这就是我缩放单个向量的方法:

vector = np.array([-4, -3, -2, -1, 0])

# pass the vector, current range of values, the desired range, and it returns the scaled vector

scaledVector = np.interp(vector, (vector.min(), vector.max()), (-1, +1)) # results in [-1. -0.5 0. 0.5 1. ]

如何将上述方法应用于给定矩阵的每一列?

matrix = np.array(

[[-4, -4, 0, 0, 0],

[-3, -3, 1, -15, 0],

[-2, -2, 8, -1, 0],

[-1, -1, 11, 12, 0],

[0, 0, 50, 69, 80]])

scaledMatrix = [insert code that scales each column of the matrix]

请注意,scaledMatrix的前两列应该等于第一个示例中的scaledVector.对于上面的矩阵,正确计算的scaledMatrix是:

[[-1. -1. -1. -0.64285714 -1. ]

[-0.5 -0.5 -0.96 -1. -1. ]

[ 0. 0. -0.68 -0.66666667 -1. ]

[ 0.5 0.5 -0.56 -0.35714286 -1. ]

[ 1. 1. 1. 1. 1. ]]

我目前的做法(错误):

np.interp(matrix, (np.min(matrix), np.max(matrix)), (-1, +1))

解决方法:

如果您想手动完成并了解正在发生的事情:

首先减去列式分钟,使每列的最小值为0.

然后除以列式振幅(max – min),使每列最大1.

现在每列都介于0和1之间.如果您希望它介于-1和1之间,请乘以2,然后减去1:

In [3]: mins = np.min(matrix, axis=0)

In [4]: maxs = np.max(matrix, axis=0)

In [5]: (matrix - mins[None, :]) / (maxs[None, :] - mins[None, :])

Out[5]:

array([[ 0. , 0. , 0. , 0.17857143, 0. ],

[ 0.25 , 0.25 , 0.02 , 0. , 0. ],

[ 0.5 , 0.5 , 0.16 , 0.16666667, 0. ],

[ 0.75 , 0.75 , 0.22 , 0.32142857, 0. ],

[ 1. , 1. , 1. , 1. , 1. ]])

In [6]: 2 * _ - 1

Out[6]:

array([[-1. , -1. , -1. , -0.64285714, -1. ],

[-0.5 , -0.5 , -0.96 , -1. , -1. ],

[ 0. , 0. , -0.68 , -0.66666667, -1. ],

[ 0.5 , 0.5 , -0.56 , -0.35714286, -1. ],

[ 1. , 1. , 1. , 1. , 1. ]])

我使用[None,:]为numpy理解我正在谈论的是“行向量”,而不是列式.

否则,使用精彩的sklearn包,其预处理模块包含许多有用的变换器:

In [13]: from sklearn.preprocessing import MinMaxScaler

In [14]: scaler = MinMaxScaler(feature_range=(-1, 1))

In [15]: scaler.fit(matrix)

Out[15]: MinMaxScaler(copy=True, feature_range=(-1, 1))

In [16]: scaler.transform(matrix)

Out[16]:

array([[-1. , -1. , -1. , -0.64285714, -1. ],

[-0.5 , -0.5 , -0.96 , -1. , -1. ],

[ 0. , 0. , -0.68 , -0.66666667, -1. ],

[ 0.5 , 0.5 , -0.56 , -0.35714286, -1. ],

[ 1. , 1. , 1. , 1. , 1. ]])

标签:python,arrays,matrix,numpy

来源: https://codeday.me/bug/20190701/1347127.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值