Я занимаюсь статистической работой, у меня есть (большая) коллекция случайных чисел для вычисления среднего значения, я бы хотел работать с генераторами, потому что мне просто нужно вычислить среднее значение, поэтому я не нужно хранить цифры.
Проблема в том, что numpy.mean сломается, если вы передадите ему генератор. Я могу написать простую функцию, чтобы делать то, что я хочу, но мне интересно, есть ли правильный, встроенный способ сделать это?
Было бы неплохо, если бы я мог сказать «сумма (значения) / len (значения)», но len не работает для генераторов и суммировать уже использованные значения.
вот пример:
import numpy
def my_mean(values):
n = 0
Sum = 0.0
try:
while True:
Sum += next(values)
n += 1
except StopIteration: pass
return float(Sum)/n
X = [k for k in range(1,7)]
Y = (k for k in range(1,7))
print numpy.mean(X)
print my_mean(Y)
они оба дают одно и то же, правильное, отвечают, покупка my_mean не работает для списков, а numpy.mean не работает для генераторов.
Мне действительно нравится идея работы с генераторами, но подобные детали, кажется, портят вещи.