python - Assign sampled multinomial values uniformly at random -
मैं एक बहुपक्षीय वितरण का नमूना करने के लिए अब मैं क्या कर रहा हूं: तब समस्या यह है कि इस कोड को आज़माएं यह रणनीति पहले स्मृति को आवंटित करने के लिए है, फिर डेटा भरने के लिए। प्रोफ़ाइल के लिए यहाँ पूर्ण कोड है एनपी आयात सीप्रोफ़ाइल एम = 10000000 ड्रॉ के रूप में नमूनों को आयात करें = np.random.multinomial (M, [1/6।] * 6, आकार = 1) draws = draws [0] draws_list1 = np.empty (M, dtype = np.int) def impl0 (): idx के लिए, draws_list0 + [[idx] * num return_list0 def impl1 (): acc = 0 आईडीएक्स, एनएम् एन्यूमरेट (ड्रॉ) में: ड्रॉ्स_सूची 1 [एसीसी: एसीसी + एमएन] .फिल (आईडीएक्स) एसीसी + = 1 रिटर्न ड्रॉ्स_लाइट 1 सीपीआरफ़ाइल.रन ("इंफ्लिक्ट ()") सीपीआरफ़ाइल.रन ("एम्प 1 ()") यहां np.random.multinomial का उपयोग कर रहा हूं
M बार (दी संभाव्यता
[X_0 X_1 .. X_n] यह निर्दिष्ट बहुविध से नमूना है, जहां
\ sum_i
[C_0 C_1 ... C_n] देता है C_i = M )। इन नमूने मूल्यों (
C_i 's) को देखते हुए, मैं उन वस्तुओं को समान रूप से असाइन करना चाहता हूं जो मेरे पास हैं
ड्रॉ = np.random.multinomial (M, probs, size = 1) ड्रॉ करता है = ड्रॉ करता है [0] draws_list = [ ] आईडीएक्स के लिए, एन्यूमरेट (ड्रॉ) में संख्या: ड्रॉ्स_लिस्ट + = [idx] * num random.shuffle (draws_list)
draws_list एक बेतरतीब ढंग से फेरबदल की सूची है नमूना मूल्यों का
draws_list (लूप के लिए) लोकप्रिय है बहुत धीमा है क्या ऐसा करने के लिए एक बेहतर / तेज़ तरीका है?
draws_list1 = np.empty (एम, dtype = np.int) एडी = 0 एडेक्स के लिए, एनएम एन्यूमरेट (ड्रॉ) : Draws_list1 [acc: acc + num] .फ़ाइल (idx) एसीसी + = num
cProfile का नतीजा है। यदि कथन
np.empty समारोह में स्थित है
impl1 ,
0.020 सेकंड elapsed हैं।
3 फ़ंक्शन 0.095 सेकंड में कॉल द्वारा आदेश: मानक नाम ncalls tottime percall cumtime percall फ़ाइल नाम: lineno (फ़ंक्शन) 1 0.020 0.020 0.095 0.095 & lt; स्ट्रिंग & gt;: 1 (& lt; मॉड्यूल & gt;) 1 0.076 0.076 0.076 0.076 prof.py:11(impl0) 1 0.000 0.000 0.000 0.000 {'_lsprof.Profiler' ऑब्जेक्ट्स के 'अक्षम'} 9 फ़ंक्शन कॉल में 0.017 सेकंड्स द्वारा क्रम: मानक नाम ncalls tottime percall cumtime percall फ़ाइल नाम: lineno (फ़ंक्शन) 1 0.000 0.000 0.017 0.017 & lt; स्ट्रिंग & gt; 1 (& lt; मॉड्यूल & gt;) 1 0.000 0.000 0.017 0.017 prof.py:17(impl1) 1 0.000 0.000 0.000 0.000 {विधि 'निष्क्रिय' '_lsprof.Profiler' ऑब्जेक्ट्स} 6 0.017 0.003 0.017 0.003 {विधि का 'भरना' numpy.ndarray 'objects}
Comments
Post a Comment