gpt4 book ai didi

python - 在 numpy 数组上应用统计方法 : unexpected results

转载 作者:太空宇宙 更新时间:2023-11-03 11:40:43 24 4
gpt4 key购买 nike

请解释。

import statistics
x = [0,1]
statistics.mean(x)
## 0.5

但是:

import numpy 
import statistics
x = numpy.array([0,1])
statistics.mean(x)
## 0

我很确定这是一个基本的、众所周知的、过度讨论的问题:请链接到副本,因为我找不到。

最佳答案

原因是 statistics 模块中有一个转换方法,它检查数据类型是否是 int 的子类。这适用于 int,但不适用于 np.int32

import statistics
from fractions import Fraction

a = statistics._convert(Fraction('1/2'), int) # 0.5
b = statistics._convert(Fraction('1/2'), np.int32) # 0

def _convert(value, T):
"""Convert value to given numeric type T."""
if type(value) is T:
return value

#### THIS BIT WORKS FOR int BUT not for np.int32 ###
if issubclass(T, int) and value.denominator != 1:
T = float

try:
return T(value)
except TypeError:
if issubclass(T, Decimal):
return T(value.numerator)/T(value.denominator)
else:
raise

因此,您可以对列表使用 statistics,或者对数组使用 numpy:

  1. 使用statistics.mean([0, 1]);或
  2. 使用 np.mean(np.array([0, 1]))np.array([0, 1]).mean()

关于python - 在 numpy 数组上应用统计方法 : unexpected results,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49875778/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com