के लिए पायथन में गणना का मतलब है मैं कुछ आंकड़े काम कर रहा हूं, मेरे पास गणना करने के लिए यादृच्छिक संख्याओं का एक (बड़ा) संग्रह है, मैं जेनरेटर के साथ काम करना चाहता हूं, क्योंकि मुझे बस गणना करने की आवश्यकता है मतलब है, इसलिए मुझे संख्याओं को स्टोर करने की आवश्यकता नहीं है।जेनरेटर
समस्या यह है कि numpy.mean तोड़ता है यदि आप इसे जनरेटर पास करते हैं। मैं जो चाहता हूं उसे करने के लिए मैं एक साधारण कार्य लिख सकता हूं, लेकिन मुझे आश्चर्य है कि ऐसा करने के लिए एक उचित, अंतर्निहित तरीका है या नहीं?
यह अच्छा होगा अगर मैं "योग (मान)/लेन (मान)" कह सकता हूं, लेकिन लेन जेनेटर्स के लिए काम नहीं करता है, और पहले ही उपभोग मूल्यों का योग करता है।
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 जनरेटर के लिए काम नहीं करता:
यहाँ एक उदाहरण है।
मुझे जेनरेटर के साथ काम करने का विचार पसंद है, लेकिन इस तरह के विवरण चीजों को खराब करना प्रतीत होता है।
तुम्हें पता था कि कितने यादृच्छिक संख्या जनरेटर अपने उत्पादन होता है, आप नहीं है? –
@ सेवन मार्नच: मान लीजिए जनरेटर फ़ाइल से पढ़ रहा है? – Jimmy
यदि आप वास्तव में डेटा को स्टोर नहीं करना चाहते हैं (और अपने धीमे 'योग 'फ़ंक्शन को लागू नहीं करते हैं) तो आप एक गिनती जनरेटर बना सकते हैं और इसे इस तरह कहते हैं:' co = countingGen(); माध्य = योग (सह (डेटा))/co.getCount() ' –