ऐसा लगता है कि यह एक ही वितरण है, numpy.random
से यादृच्छिक नमूने ड्राइंग scipy.stats.-.rvs
से ऐसा करने से तेज़ है। मैं सोच रहा था कि दोनों के बीच गति अंतर क्या होता है?scipy.stats से यादृच्छिक ड्रॉ के बीच अंतर .... आरवीएस और numpy.random
उत्तर
scipy.stats.uniform वास्तव में, numpy का उपयोग करता है यहाँ आँकड़ों में इसी समारोह है (mtrand numpy.random के लिए एक उपनाम है)
class uniform_gen(rv_continuous):
def _rvs(self):
return mtrand.uniform(0.0,1.0,self._size)
scipy.stats त्रुटि जाँच और बनाने के लिए भूमि के ऊपर का एक सा है इंटरफ़ेस अधिक लचीला। जब तक आप प्रत्येक ड्रॉ के लिए लूप में वर्दी.आरवी को कॉल नहीं करते हैं तब तक गति अंतर कम से कम होना चाहिए। आप प्राप्त कर सकते हैं बजाय सभी यादृच्छिक, एक बार में ड्रॉ उदाहरण (10 लाख) के लिए
>>> rvs = stats.uniform.rvs(size=(10000, 1000))
>>> rvs.shape
(10000, 1000)
यहां लंबा जवाब है, कि मैंने कुछ समय पहले लिखा था:
scipy/numpy में बुनियादी यादृच्छिक संख्या बनाई गई हैं मेर्सेन-ट्विस्टर पीआरएनजी numpy.random में। Numpy.random में वितरण के लिए यादृच्छिक संख्या साइथन/पायरेक्स में हैं और बहुत तेज हैं।
सीधे numpy.random से, उदाहरण के लिए:
scipy.stats एक यादृच्छिक संख्या जनरेटर नहीं है, यादृच्छिक संख्या तीन तरीकों में से एक में प्राप्त कर रहे हैं सामान्य, टी, ... बहुत तेजी से
यादृच्छिक अन्य यादृच्छिक संख्या के परिवर्तन द्वारा संख्या कि numpy.random में उपलब्ध हैं, भी बहुत तेजी से, क्योंकि यह संख्या
सामान्य की पूरे सरणियों पर चल रही है: एकमात्र जेनेरिक पीढ़ी यादृच्छिक संख्या पीढ़ी द्वारा पीपीएफ (उलटा सीडीएफ) का उपयोग करके वर्दी यादृच्छिक संख्याओं को बदलने के लिए है। पीपीएफ के लिए स्पष्ट अभिव्यक्ति होने पर यह अपेक्षाकृत तेज़ है, लेकिन बहुत धीमा हो सकता है यदि पीपीएफ की गणना अप्रत्यक्ष रूप से की जानी चाहिए। उदाहरण के लिए यदि केवल पीडीएफ परिभाषित किया गया है, तो सीडीएफ संख्यात्मक एकीकरण के माध्यम से प्राप्त है और पीपीएफ एक समीकरण सॉल्वर के माध्यम से प्राप्त किया जाता है। तो कुछ वितरण बहुत धीमी हैं।
मैं आज इस में भाग गया और बस इस प्रश्न में कुछ समय ब्योरा जोड़ना चाहता था। मैंने देखा कि किस जून ने उल्लेख किया है, विशेष रूप से, सामान्य वितरण से यादृच्छिक संख्या के साथ scipy.stats
से अधिक तेज़ी से उत्पन्न हुई थी। चूंकि उपयोगकर्ता 333700 का उल्लेख है कि rvs
के साथ कुछ ओवरहेड है लेकिन यदि आप यादृच्छिक मानों की एक सरणी उत्पन्न कर रहे हैं तो यह अंतर numpy
की तुलना में बंद हो जाता है।
from scipy.stats import norm
import numpy as np
n = norm(0, 1)
%timeit -n 1000 n.rvs(1)[0]
%timeit -n 1000 np.random.normal(0,1)
%timeit -n 1000 a = n.rvs(1000)
%timeit -n 1000 a = [np.random.normal(0,1) for i in range(0, 1000)]
%timeit -n 1000 a = np.random.randn(1000)
यह, मेरे चलाने पर साथ numpy
संस्करण 1.11.1 और scipy
0.17.0, आउटपुट:
1000 loops, best of 3: 46.8 µs per loop
1000 loops, best of 3: 492 ns per loop
1000 loops, best of 3: 115 µs per loop
1000 loops, best of 3: 343 µs per loop
1000 loops, best of 3: 61.9 µs per loop
तो सिर्फ एक नमूने के तौर पर पैदा rvs
लगभग था से यहाँ एक jupyter समय उदाहरण है numpy
का उपयोग करने से 100x धीमी है। हालांकि, यदि आप अंतराल बंद होने से मूल्यों की एक सरणी उत्पन्न कर रहे हैं (115 से 61।9 माइक्रोसॉन्ड)।
यदि आप इससे बच सकते हैं, तो शायद लूप में एक बार यादृच्छिक मूल्य प्राप्त करने के लिए rvs
पर कॉल न करें।
- 1. arc4random और यादृच्छिक के बीच क्या अंतर है?
- 2. "। +" और "। +?" के बीच अंतर
- 3. एंड्रॉइड ड्रॉ बिटमैप 5x प्रदर्शन अंतर
- 4. == और मामले के बीच अंतर?
- 5. AJAX के बीच अंतर और
- 6. CMake: $ {} और के बीच अंतर "$ {}"
- 7. ऑब्जेक्ट और * के बीच अंतर?
- 8. $ के बीच अंतर? और PowerShell
- 9. "या" और "||" के बीच अंतर
- 10. वीबीए: और + के बीच अंतर
- 11. .NET: PasswordDeriveBytes और Rfc2898DeriveBytes के बीच अंतर
- 12. NetworkStream.Read() और NetworkStream.BeginRead() के बीच अंतर?
- 13. पैरामीटर परिभाषाओं के बीच अंतर (प्रकार और नाम), और (प्रकार * नाम) के बीच अंतर क्या हैं?
- 14. संबंधों के बीच और कहां के बीच अंतर
- 15. smtpClient.send() और smtpClient.SendAsync() के बीच अंतर?
- 16. केवलOnRanToCompletion और NotOnFaulted के बीच अंतर?
- 17. एन्कोडिंग और संयोजन के बीच अंतर?
- 18. स्ट्रीमिंग और लाइव स्ट्रीमिंग के बीच अंतर?
- 19. ट्रे और पेड़ के बीच अंतर?
- 20. एंड्रॉइड: canvas.drawBitmap और BitmapDrawable.draw के बीच अंतर?
- 21. पुस्तकालय और आवेदन कोड के बीच अंतर?
- 22. 'distcp' और 'distcp -update' के बीच अंतर?
- 23. JAVA_OPTS और JAVA_TOOL_OPTIONS के बीच अंतर?
- 24. स्ट्रिंग के बीच अंतर। छोटे और TextInfo.ToLower
- 25. विंसॉक और लिनक्स सॉकेट के बीच अंतर
- 26. ऑन क्लॉज के बीच अंतर और एसक्यूएल
- 27. BOOST_CHECK_CLOSE और BOOST_CHECK_CLOSE_FRACTION के बीच अंतर?
- 28. पूल और क्लस्टर के बीच अंतर
- 29. Array.slice और Array() के बीच अंतर। स्लाइस
- 30. onbeforeunload और onunload के बीच अंतर
धन्यवाद। मैं एमसीएमसी दिनचर्या चला रहा हूं इसलिए मुझे बहुत अधिक आकर्षित करना है, इसलिए मैं numpy.random का उपयोग करूंगा। – joon