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
.
طريقة العرض تعيد الصفيف الأصلي.