之前用np.std() 都很流畅,今天突然发现得出的结果是inf,检查了数据,发现数据没有问题,最后终于找到原因——由于变量定义的类型的原因。
计算的数据集,df的数据如下:
# df是上百行几十列的数据
# 分别对df求期望和均质
df_numpy = np.array(df,dtype=np.float16)
df_numpy_mean = np.mean(df_numpy) # --> 3740.0
df_numpy_std = np.std(df_numpy) # -->inf
计算的std的结果为inf,应该是数据溢出了,把dtype 改为 float64 ,结果就出来了
# df是上百行几十列的数据
# 分别对df求期望和均质
df_numpy = np.array(df,dtype=np.float64)
df_numpy_mean = np.mean(df_numpy) # --> 3740.0154
df_numpy_std = np.std(df_numpy) # -->321.3843
可以看出,不同的数据精度,计算的结果的精度也是不一样的,至于溢出的问题,应该是np在计算的时候,会先在原来的数据上进行操作,最后再合并输出结果,溢出是在原始数据上发生的。
ps. 如果不对dtype进行设置的话,结果也是准确的。