我有两个代码段如下。
import numpy
numpy.std([766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346])
0
和
import pandas as pd
pd.Series([766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346]).std(ddof=0)
10.119288512538814
这是一个巨大的差异。
我可以问为什么?
答案 0 :(得分:2)
这个问题确实已在讨论中(link);问题似乎是计算pandas
使用的标准差的算法,因为它不像numpy
那样在数值上稳定。
一个简单的解决方法是先将.values
应用于该系列,然后将std
应用于这些值;在这种情况下,使用了numpy's
std
:
pd.Series([766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346]).values.std()
,它给你预期的值0。