在Python统计的均值和中位数中,输出类型是如何定义的



我正在学习python,并尝试创建变量、做一些数学运算、处理列表和使用统计函数等基本功能。然而,在试验statistics.mmean((和statistics.median((时,我可以看到输出变量类型的家长。

作为两个例子,我运行下面的代码两次,只在列表中包括一个元素:

from statistics import mean, median
z = [10,20,30,40]
x = mean(z)
y = median(z)
print(x)
print(type(x))
print(y)
print(type(y))

输出为:

25
<class 'int'>
25.0
<class 'float'>

然后,我再次运行代码

from statistics import mean, median
z = [10,20,30,40,11]
x = mean(z)
y = median(z)
print(x)
print(type(x))
print(y)
print(type(y))

输出是

22.2
<class 'float'>
20
<class 'int'>

有一条规则需要知道吗;最佳实践";以跟踪并防止未来出现进一步的问题?

阅读文档:https://docs.python.org/3/library/statistics.html#statistics.median

中值是中心位置的稳健度量,受异常值影响较小。当数据点数为奇数时,返回中间数据点:

>>> median([1, 3, 5])
3

当数据点数为偶数时,通过取两个中间值的平均值来插值中值:

>>> median([1, 3, 5, 7])
4.0

这实际上意味着,如果存在偶数个值,则median()将返回float。否则,它将返回列表中间的项目,该项目可能是int

mean的文档只是说:

算术平均值是数据的总和除以数据点的数量

因此,考虑到您的结果,看起来mean被保留为int,除非它必须是float

如果您想了解具体的CPython实现细节,可以获得源代码。

python中的许多方法都是为了进行相同的计算而编写的,但数据类型不同。对我来说,这看起来像是它首先询问更快的整数运算,如果这是可能的,并且true返回一个int。如果这个错误,它会进行更慢的浮点运算。如果要强制返回浮点值,可以使用fmean((。我认为median((没有类似的选项。

最新更新