【发布时间】:2015-07-20 18:46:49
【问题描述】:
import numpy as np
import math
def normalize(array):
mean = sum(array) / len(array)
deviation = [(float(element) - mean)**2 for element in array]
std = math.sqrt(sum(deviation) / len(array))
normalized = [(float(element) - mean)/std for element in array]
numpy_normalized = (array - np.mean(array)) / np.std(array)
print normalized
print numpy_normalized
print ""
normalize([2, 4, 4, 4, 5, 5, 7, 9])
normalize([1, 2])
normalize(range(5))
输出:
[-1.5, -0.5, -0.5, -0.5, 0.0, 0.0, 1.0, 2.0]
[-1.5 -0.5 -0.5 -0.5 0. 0. 1. 2. ]
[0.0, 1.414213562373095]
[-1. 1.]
[-1.414213562373095, -0.7071067811865475, 0.0, 0.7071067811865475, 1.414213562373095]
[-1.41421356 -0.70710678 0. 0.70710678 1.41421356]
有人可以向我解释为什么这段代码在第二个示例中的行为不同,而在其他两个示例中却类似吗?
我在硬编码示例中做错了吗? NumPy 会做什么以得到 [-1, 1]?
【问题讨论】:
-
最后一个示例与第一个示例有何不同?在这两种情况下,您都得到了相同(或非常接近)的数字,只是打印了不同的小数位数(当然,它们之间使用逗号与不使用逗号)。
-
啊,对不起。我的意思是反过来,只有 [1, 2] 的例子不同。
标签: python numpy normalization