Ave*_*nus 1 python numpy python-3.x
我有一个包含以下整数的 numpy 数组:
[10 30 16 18 24 18 30 30 21 7 15 14 24 27 14 16 30 12 18]
Run Code Online (Sandbox Code Playgroud)
我想将它们标准化为 1 到 10 之间的范围。
我知道规范化数组的一般公式是:
但是我应该如何在 1 到 10 之间缩放它们?
问题:将此数组规范化为 1 到 10 之间的值的最简单/最快的方法是什么?
您的范围实际上是 9 长:从 1 到 10。如果将归一化数组乘以 9,您会得到从 0 到 9 的值,您需要将其移回 1:
start = 1
end = 10
width = end - start
res = (arr - arr.min())/(arr.max() - arr.min()) * width + start
Run Code Online (Sandbox Code Playgroud)
请注意,这里的分母有一个名为 的 numpy 内置arr.ptp():
res = (arr - arr.min())/arr.ptp() * width + start
Run Code Online (Sandbox Code Playgroud)