नम्पी ऐरे असाइनमेंट: मेमोरी आवंटन अंतर
NumPy में, किसी ऐरे में मान निर्दिष्ट करने के तीन सामान्य तरीके हैं:
B = A
जब आप B = A का उपयोग करते हैं, तो आप एक नई सरणी नहीं बना रहे हैं। इसके बजाय, आप मौजूदा सरणी (ए) में एक नया नाम (बी) बांध रहे हैं। परिणामस्वरूप, एक सरणी में किया गया कोई भी संशोधन दूसरे सरणी में दिखाई देगा।
B[:] = A
यह सिंटैक्स एक नई सरणी B बनाता है ए के समान आयाम और मान। मूल सरणी ए संशोधित नहीं है। इस विधि के लिए numpy.copy की तुलना में कम मेमोरी आवंटन की आवश्यकता होती है।
numpy.copy(B, A)
यह विधि कानूनी नहीं है जैसा आपने लिखा है। यह B = numpy.copy(A) होना चाहिए। numpy.copy A के समान आयामों और मानों के साथ एक नई सरणी B बनाता है। इस विधि को B[:] = A की तुलना में अधिक मेमोरी आवंटन की आवश्यकता होती है क्योंकि यह मूल सरणी से डेटा की एक अलग भौतिक प्रतिलिपि बनाता है।
अतिरिक्त मेमोरी कब आवंटित की जाती है?
जब आप सरणी की एक नई भौतिक प्रतिलिपि बनाने के लिए numpy.copy का उपयोग करते हैं तो अतिरिक्त मेमोरी आवंटित की जाती है। ऐसा इसलिए है क्योंकि यह कॉपी किए गए डेटा के लिए मेमोरी का एक नया सन्निहित ब्लॉक आवंटित करता है।
मेमोरी कब आवंटित नहीं होती है?
जब आप B = A का उपयोग करते हैं तो मेमोरी आवंटित नहीं होती है क्योंकि आप बस मूल सरणी का नाम बदल रहे हैं। जब आप B[:] = A का उपयोग करते हैं तो मेमोरी भी आवंटित नहीं होती है क्योंकि यह मूल सरणी के समान मेमोरी स्थान का पुन: उपयोग करता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3