تفاوت بین Copy و 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)
نمای باید تحت تأثیر تغییرات ایجاد شده در آرایه اصلی قرار گیرد.
تغییراتی در VIEW ایجاد کنید:
مثال
یک نمای ایجاد کنید ، نمای آن را تغییر دهید و هر دو آرایه را نمایش دهید:
import numpy as np arr = np.array([1, 2, 3, 4, 5]) x = arr.view() x[0] = 31 print(arr) print(x)
آرایه اصلی باید تحت تأثیر تغییرات ایجاد شده در نمای قرار گیرد.
بررسی کنید آیا آرایه مالک داده های آن است یا خیر
همانطور که در بالا ذکر شد ، کپی داده ها را در اختیار دارد و View ها مالک داده ها نیستند ، اما چگونه می توانیم این را بررسی کنیم؟
هر آرایه 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
.
نمای آرایه اصلی را برمی گرداند.