首页 > 解决方案 > 如何规范化 1 到 10 之间的数组?

问题描述

我有一个带有以下整数的 numpy 数组:

[10 30 16 18 24 18 30 30 21 7 15 14 24 27 14 16 30 12 18]

我想将它们标准化为 1 到 10 之间的范围。

我知道标准化数组的一般公式是:

在此处输入图像描述

但是我应该如何在 1 到 10 之间缩放它们呢?

问题:将此数组标准化为 1 到 10 之间的值的最简单/最快的方法是什么?

标签: pythonpython-3.xnumpy

解决方案


您的范围实际上是 9 长:从 1 到 10。如果将归一化数组乘以 9,则得到从 0 到 9 的值,您需要将其移回 1:

start = 1
end = 10
width = end - start
res = (arr - arr.min())/(arr.max() - arr.min()) * width + start

请注意,这里的分母有一个名为 numpy 的内置函数arr.ptp()

res = (arr - arr.min())/arr.ptp() * width + start

推荐阅读