在 excel 中有一个名为 AVEDEV 的函数,它返回一组数据与其均值的绝对偏差的平均值,可用于评测一组数据的离散度。
以下 python 代码可以实现类似的功能:
#!/bin/python
import sys
def get_avedev(data):
if len(data) == 0:
return -1;
ave = sum(data) * 1.0 / len(data)
return sum([abs(v - ave) for v in data]) * 1.0 / len(data)
def main():
if len(sys.argv) < 2:
print "Usage: %s number-seqs" % sys.argv[0]
return
data = []
for i in range(1, len(sys.argv)):
data.append(float(sys.argv[i]))
ave = sum(data) * 1.0 / len(data)
avedev = get_avedev(data)
print "average: %lf" % ave
print "avedev: %lf" % avedev
print "avedev ratio: %lf" % (avedev / ave)
if __name__ == "__main__":
main()
使用示例:
$ stat.py 0.1966 0.1957 0.1971 0.1967 0.1971 0.1963 0.1952
average: 0.196386
avedev: 0.000559
avedev ratio: 0.002847