Speed up counting in statistics.fmean() (gh-148875)

This commit is contained in:
Raymond Hettinger 2026-04-22 22:06:56 -05:00 committed by GitHub
parent 8bf99ae3a9
commit fbc7676df6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -136,7 +136,7 @@
from fractions import Fraction
from decimal import Decimal
from itertools import count, groupby, repeat
from itertools import compress, count, groupby, repeat
from bisect import bisect_left, bisect_right
from math import hypot, sqrt, fabs, exp, erfc, tau, log, fsum, sumprod
from math import isfinite, isinf, pi, cos, sin, tan, cosh, asin, atan, acos
@ -195,9 +195,9 @@ def fmean(data, weights=None):
n = len(data)
except TypeError:
# Handle iterators that do not define __len__().
counter = count()
total = fsum(map(itemgetter(0), zip(data, counter)))
n = next(counter)
counter = count(1)
total = fsum(compress(data, counter))
n = next(counter) - 1
else:
total = fsum(data)