为什么python statistics.mean()返回int类型,而不是float
我使用statistics.mean()计算抽样分布的平均值。但是,在下面的代码中,以下值返回的值是舍入整数。如果改用numpy.mean(),将得到正确的浮点类型结果。这是怎么回事为什么python statistics.mean()返回int类型,而不是float,python,numpy,Python,Numpy,我使用statistics.mean()计算抽样分布的平均值。但是,在下面的代码中,以下值返回的值是舍入整数。如果改用numpy.mean(),将得到正确的浮点类型结果。这是怎么回事 import statistics from scipy import stats posterior_sample = stats.beta.rvs(3, 19, size = 1000) predictive_sample = stats.binom.rvs(100, posterior_sample, si
import statistics
from scipy import stats
posterior_sample = stats.beta.rvs(3, 19, size = 1000)
predictive_sample = stats.binom.rvs(100, posterior_sample, size = 1000)
print(statistics.mean(predictive_sample))
print(statistics.mean([(data >= 15).astype(int) for data in predictive_sample]))
statistics.mean
不支持numpy.int64
数据类型
从用于统计的,
:
除非另有明确说明,否则这些函数支持int、float、,
小数。小数和分数。分数。与其他类型的行为
(无论是否在数字塔中)当前不受支持。混合的
类型也未定义且依赖于实现。如果你的意见
数据由混合类型组成,您可以使用map()来确保
一致的结果,例如地图(浮动、输入数据)
要解决这个问题,您可以按照建议进行操作,将数据转换为float
,然后再传递到statistics.mean()
现在了解这种行为背后的根本原因:
在forstatistics.mean
的末尾,有一个调用statistics.\u convert
,用于将返回值转换为适当的类型(即,如果输入为分数,则为分数,如果输入为int
等),则为float
in\u convert
用于捕获其他数据类型,并确保返回值与提供的数据一致(T
是每个输入值的数据类型,value
是计算的平均值):
如果您的输入是numpy.int64
,则\u convert
函数尝试将计算的平均值转换为numpy.int64
数据类型。NumPy很高兴地将浮点转换为int(我想是向下舍入)。因此,mean
函数返回一个四舍五入到最近整数的平均值,编码为numpy.int64
如果您的输入数据是
numpy.float64
,那么您就不会有这个问题。一个简单的例子:statistics.mean([6,7,8,9])
和statistics.mean(np.array([6,7,8,9])
。
print(statistics.mean(map(float, predictive_sample)))
try:
return T(value)