如何相对于numpy数组的每个元素进行缩放



我正试图将MinMaxScaler应用于numpy数组的每个元素,并希望它向量化(我不想使用for循环(。

example = np.array([[2.52163839, 2.54165282, 2.12608389, 2.54515915],
[2.29481214, 1.78448378, 2.26652405, 2.27311454],
[2.31706137, 2.29058921, 1.83225955, 2.29767736]])

我希望第一个元素([2.52163839, 2.54165282, 2.12608389, 2.54515915](相对于自身进行缩放(因此索引2变为0,索引3变为1,等等(,

则第二元素([2.29481214, 1.78448378, 2.26652405, 2.27311454](相对于其自身缩放(因此索引1变为0,索引0变为1,等等(,依此类推。

我尝试了example = np.array(list(map(MinMaxScaler().fit_transform(), example))),但它不起作用,因为MinMaxScaler要求将被缩放的东西作为参数传递到fit_transform方法中。

谢谢!

可以将map与lambda函数一起使用。由于MinmaxScaler 的规格,需要进行一些整形

np.array(list( map ( lambda x: MinMaxScaler().fit_transform(
x.reshape(-1, 1)) , example) )).reshape(3,4)

输出:

array([[0.94387462, 0.99163317, 0.        , 1.        ],
[1.        , 0.        , 0.94456885, 0.95748306],
[1.        , 0.94539591, 0.        , 0.96001663]]) 

===编辑:添加以包含@NaiveBae自己的解决方案===

简单缩放换位阵列:

MinMaxScaler().fit_transform( example.T ).T

这将起作用,因为MinMaxScaler使用以下内容作为其实现:

X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))
X_scaled = X_std * (max - min) + min

通过换位,我们将所需的轴转换为轴0(第一个轴(。

最新更新