您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在python中标准化numpy数组列

在python中标准化numpy数组列

如果我理解正确,那么您要做的就是除以每一列中的最大值。您可以使用广播轻松地做到这一点。

从示例数组开始:

import numpy as np

x = np.array([[1000,  10,   0.5],
              [ 765,   5,  0.35],
              [ 800,   7,  0.09]])

x_normed = x / x.max(axis=0)

print(x_normed)
# [[ 1.     1.     1.   ]
#  [ 0.765  0.5    0.7  ]
#  [ 0.8    0.7    0.18 ]]

x.max(0)在第0维(即行)上取最大值。这为您提供了一个大小向量,(ncols,)其中每一列都包含最大值。然后x,您可以除以该向量,以标准化您的值,以便将每一列中的最大值缩放为1。

如果x包含负值,则需要先减去最小值:

x_normed = (x - x.min(0)) / x.ptp(0)

在此,x.ptp(0)返回沿轴0的“峰到峰”(即范围,最大值-最小值)。此归一化还确保每一列的最小值将为0。

python 2022/1/1 18:43:08 有310人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶