【发布时间】:2022-08-18 22:37:15
【问题描述】:
对于我手头的更大任务,我有这个迷你示例:
from sklearn.preprocessing import minmax_scale
arr = np.array([[1,2,3],[4,5,6],[11,12,13]])
print(arr)
scaled_array = minmax_scale(arr, axis=0)
print(scaled_array)
输出是:
[[ 1 2 3]
[ 4 5 6]
[11 12 13]]
[[0. 0. 0. ]
[0.3 0.3 0.3]
[1. 1. 1. ]]
不幸的是,我只能让它按列或按行扩展到 (0,1)。我想让这个数组全局缩放。
所以我想要的输出是:
[[0. 0.08 0.16]
[0.25 0.33 0.41]
[0.83 0.91 1]]
除了全局检查最小值然后检查最大值然后为我的二维数组中的每个条目手动计算它之外,我该怎么做(我不想这样做,因为它不是对我手头的更大任务非常有效)?
编辑:
所以我写了我自己的函数来做到这一点:
min_value = np.amin(arr)
max_value = np.amax(arr)
arr = arr.astype(np.float64)
for x in np.nditer(arr, order=\'C\', op_flags=[\'readwrite\']):
scaled_value = (x-min_value)/(max_value-min_value)
x[...]=scaled_value
这确实产生了想要的结果。我仍然想知道是否有类似的方法minmax_scale从sklearn.preprocessing那可能会做我想做的事。有人有想法吗?
标签: arrays numpy scikit-learn normalization