सबसे पहले, जैसा कि @bmu, द्वारा लिखा गया है, आपको वेक्टरकृत गणनाओं, यूफुनिक्स और इंडेक्सिंग के संयोजनों का उपयोग करना चाहिए। वास्तव में कुछ ऐसे मामले हैं जहां स्पष्ट लूपिंग की आवश्यकता होती है, लेकिन वे वास्तव में दुर्लभ हैं।
यदि स्पष्ट लूप की आवश्यकता है, तो पाइथन 2.6 और 2.7 के साथ, आपको xrange (नीचे देखें) का उपयोग करना चाहिए। आप जो कहते हैं, उससे पाइथन 3, रेंजxrange (जनरेटर लौटाता है) जैसा ही है। तो शायद रेंज आपके लिए उतनी ही अच्छी है।
अब, तुम यह कोशिश करनी चाहिए खुद (timeit का उपयोग कर: - यहाँ IPython "जादू समारोह"):
%timeit for i in range(1000000): pass
[out] 10 loops, best of 3: 63.6 ms per loop
%timeit for i in np.arange(1000000): pass
[out] 10 loops, best of 3: 158 ms per loop
%timeit for i in xrange(1000000): pass
[out] 10 loops, best of 3: 23.4 ms per loop
फिर, जैसा कि ऊपर उल्लेख किया है, समय की सबसे यह संभव numpy वेक्टर उपयोग करने के लिए है/सरणी सूत्र (या ufunc आदि ...) जो एसी गति चलाता है: बहुत तेज। यही वह है जिसे हम "वेक्टर प्रोग्रामिंग" कह सकते हैं। यह सी (और अधिक पठनीय) की तुलना में प्रोग्राम को कार्यान्वित करना आसान बनाता है लेकिन अंत में लगभग तेज़ है।
स्रोत
2012-05-22 09:52:05
धन्यवाद, मुझे जादू समारोह के बारे में पता नहीं था। – clstaudt
एक मानक पायथन 'टाइमिट' मॉड्यूल है जो आईपीथन के बिना ऐसा करने की अनुमति देता है। लेकिन यह जादू कार्य का उपयोग करने के लिए बस इतना आसान है। –
-1 क्योंकि मुझे लगता है कि यह एक अच्छा बेंचमार्क नहीं है। एक numpy सरणी पर लूपिंग अक्षम है। – bmu