تعيين مصفوفة Numpy: اختلافات تخصيص الذاكرة
في NumPy، هناك ثلاث طرق شائعة لتعيين قيم لمصفوفة:
B = A
عندما استخدم B = A، فأنت لا تقوم بإنشاء مصفوفة جديدة. بدلاً من ذلك، تقوم بربط اسم جديد (B) بالمصفوفة الموجودة (A). ونتيجة لذلك، فإن أي تعديلات يتم إجراؤها على مصفوفة واحدة سوف تنعكس في المصفوفة الأخرى.B[:] = Aينشئ هذا البناء مصفوفة جديدة B مع نفس الأبعاد والقيم مثل A. لم يتم تعديل المصفوفة الأصلية A. تتطلب هذه الطريقة تخصيصًا أقل للذاكرة مقارنة بـ numpy.copy.
numpy.copy(B, A)هذه الطريقة غير قانونية كما كتبتها. يجب أن يكون B = numpy.copy(A). numpy.copy ينشئ مصفوفة جديدة B بنفس الأبعاد والقيم مثل A. تتطلب هذه الطريقة تخصيصًا أكبر للذاكرة مقارنة بـ B[:] = A لأنها تنشئ نسخة فعلية منفصلة من البيانات من المصفوفة الأصلية.
متى يتم تخصيص الذاكرة الإضافية؟يتم تخصيص ذاكرة إضافية عند استخدام numpy.copy لإنشاء نسخة فعلية جديدة من المصفوفة. وذلك لأنه يخصص كتلة جديدة متجاورة من الذاكرة للبيانات المنسوخة.
متى لا يتم تخصيص الذاكرة؟
لا يتم تخصيص الذاكرة عند استخدام B = A لأنك تقوم ببساطة بإعادة تسمية المصفوفة الأصلية. لا يتم تخصيص الذاكرة أيضًا عند استخدام B[:] = A لأنها تعيد استخدام نفس موقع الذاكرة مثل المصفوفة الأصلية.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3