我有一个数组,我想将此转换仅应用于值位置的第1个和第3个。
所以值
( -0.23685953, -0.23685953,0.12831355 | 0.94160742, 0.67673782, 0.27031023)
X = np.array([[-0.23685953, 0.04296864, 0.94160742],
[-0.23685953, 1.05043547, 0.67673782],
[0.12831355, 0.16017461, 0.27031023]])
我要应用的转化
x_np = np.asarray(X)
np_minmax = (x_np - x_np.min()) / (x_np.max() - x_np.min())
答案 0 :(得分:0)
我假设您想将此转换应用于第一列和第三列。 您可以使用sklearn中的MinMaxScaler来实现这一点
from sklearn.preprocessing import MinMaxScaler
import numpy as np
X = np.array([[-0.23685953, 0.04296864, 0.94160742],
[-0.23685953, 1.05043547, 0.67673782],
[0.12831355, 0.16017461, 0.27031023]])
我们仅对第0列和第2列应用最小-最大缩放(基于0的索引)
scalar=MinMaxScaler()
scaled_columns=scalar.fit_transform(X[:,[0,2]])
现在,我们使用numpy的列堆栈功能将这些转换后的列与未转换的中间列合并在一起。
X=np.column_stack((scaled_columns[:,0],X[:,1],scaled_columns[:,1]))
print(X)
[[ 0. 0.04296864 1. ]
[ 0. 1.05043547 0.60543616]
[ 1. 0.16017461 0. ]]