Я занимаюсь статистикой, у меня есть (большая) коллекция случайных чисел для вычисления среднего значения, я хотел бы работать с генераторами, потому что мне просто нужно вычислить среднее значение, поэтому мне не нужно хранить число.
Проблема в том, что 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 не работает для генераторов.
Мне очень нравится идея работы с генераторами, но такие детали, похоже, все портят.
sum
), вы можете создать генератор подсчета и вызвать его следующим образом:co = countingGen(); mean = sum(co(data))/co.getCount()
- person Thomas Ahle   schedule 11.02.2011