如何只选择数组中的某些值?

时间:2018-07-21 15:17:16

标签: python pandas numpy

我有一个数组,我想将此转换仅应用于值位置的第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())

1 个答案:

答案 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.        ]]