जिसमें मॉड्यूल np.inner
और np.sum
कार्यान्वित कर रहे हैं मैं
>>> np.inner.__module__
'numpy.core.multiarray'
>>> np.sum.__module__
'numpy.core.fromnumeric'
>>> np.__file__
'/Users/uweschmitt/venv_so/lib/python3.5/site-packages/numpy/__init__.py'
टाइप आप वास्तविक फ़ाइलों का निरीक्षण किया, तो आप देख सकते हैं कि numpy.core.multiarray
एक शुद्ध सी मॉड्यूल है, जबकि numpy.core.fromnumeric
पहले कुछ चेक और अजगर में रूपांतरण करता है की जाँच करने के एक दूसरे पायथन समारोह से पहले और फिर वास्तविक सारांश के लिए एक शुद्ध सी कार्यान्वयन कहा जाता है।
मुझे संदेह है कि पाइथन दुभाषिया से यह ओवरहेड मनाए गए समय अंतर को बताता है।
मैं एक बड़ा सरणी के साथ समय चलाने मेरी धारणा को साबित और मिल
In [8]: a = np.random.random(1000000)
In [9]: %timeit np.inner(a, a)
1000 loops, best of 3: 673 µs per loop
In [10]: %timeit np.sum(a)
1000 loops, best of 3: 584 µs per loop
अब चलाने बार काफी समान हैं और एक छोटे से बदल अगर आप बयान, कभी कभी np.sum
जीत, somtimes np.inner
को दोहराने के लिए।
बड़ी सरणी के लिए np.sum
का वास्तविक कार्य सी में किया जाता है और पाइथन दुभाषिया से निरंतर समय ओवरहेड नगण्य है।
यह एक अच्छा अवलोकन है, लेकिन सरणी में तत्वों की संख्या में वृद्धि ने मेरे लिए समस्या को बढ़ा दिया। आपके पास 1 एम तत्वों के लिए, 'एनपी.इनर' ने 62.2 माइक्रोसॉन्ड लिया, जबकि 'np.sum' ने 1.04 एमएस लिया, या लगभग 17x लंबा, – bcf
आप 'numpy' का किस संस्करण का उपयोग करते हैं? मेरे पास '1.11.0' है। – rocksportrocker
और: क्या आपने कई बार समय चलाया? – rocksportrocker