NumPy Array Copy vs View


الفرق بين النسخ والعرض

يتمثل الاختلاف الرئيسي بين نسخة وعرض مصفوفة في أن النسخة عبارة عن مصفوفة جديدة ، وأن العرض هو مجرد عرض للمصفوفة الأصلية.

تمتلك النسخة البيانات ولن تؤثر أي تغييرات يتم إجراؤها على النسخة على المصفوفة الأصلية ، ولن تؤثر أية تغييرات يتم إجراؤها على المصفوفة الأصلية على النسخة.

لا يمتلك العرض البيانات وأي تغييرات يتم إجراؤها على طريقة العرض ستؤثر على المصفوفة الأصلية ، وأي تغييرات يتم إجراؤها على المصفوفة الأصلية ستؤثر على العرض.


ينسخ:

مثال

قم بعمل نسخة وتغيير المصفوفة الأصلية وعرض كلا المصفوفتين:

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
arr[0] = 42

print(arr)
print(x)

يجب ألا تتأثر النسخة بالتغييرات التي تم إجراؤها على المصفوفة الأصلية.


رأي:

مثال

قم بعمل عرض ، وقم بتغيير المصفوفة الأصلية ، واعرض كلا المصفوفتين:

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
x = arr.view()
arr[0] = 42

print(arr)
print(x)

يجب أن يتأثر العرض بالتغييرات التي تم إجراؤها على المصفوفة الأصلية.

قم بإجراء التغييرات في العرض:

مثال

قم بعمل عرض وتغيير طريقة العرض واعرض كلا المصفوفتين:

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
x = arr.view()
x[0] = 31

print(arr)
print(x)

يجب أن تتأثر المصفوفة الأصلية بالتغييرات التي تم إجراؤها على طريقة العرض.



تحقق مما إذا كانت Array تمتلك بيانات

كما ذكرنا سابقًا ، تمتلك النسخ البيانات ، ولا تمتلك المشاهدات البيانات ، ولكن كيف يمكننا التحقق من ذلك؟

كل مصفوفة NumPy لها السمة baseالتي ترجع Noneإذا كانت المصفوفة تمتلك البيانات.

خلاف ذلك ، base  تشير السمة إلى الكائن الأصلي.

مثال

اطبع قيمة السمة الأساسية للتحقق مما إذا كانت المصفوفة تمتلك بياناتها أم لا:

import numpy as np

arr = np.array([1, 2, 3, 4, 5])

x = arr.copy()
y = arr.view()

print(x.base)
print(y.base)

تعود النسخة None.
طريقة العرض تعيد الصفيف الأصلي.


اختبر نفسك مع التمارين

ممارسه الرياضه:

استخدم الطريقة الصحيحة لعمل نسخة من المصفوفة.

arr = np.array([1, 2, 3, 4, 5])

x = arr.