Я занимаюсь статистикой, у меня есть (большая) коллекция случайных чисел, чтобы вычислить среднее значение, я хотел бы работать с генераторами, потому что мне просто нужно вычислить среднее значение, поэтому я не необходимо сохранить номера.
Проблема в том, что numpy.mean ломается, если вы передаете ему генератор. Я могу написать простую функцию, чтобы делать то, что хочу, но мне интересно, есть ли у вас правильный, встроенный способ сделать это?
Было бы неплохо, если бы я мог сказать "sum (values)/len (values)", но 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)
они оба дают одинаковый, правильный, ответ, buy my_mean не работает для списков, а numpy.mean не работает для генераторов.
Мне очень нравится идея работать с генераторами, но детали вроде этого, кажется, портят вещи.