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