تفاوت بین copy و view در ماژول NumPy

تفاوت بین copy و view در ماژول NumPy

زمان مطالعه

5 دقیقه

تعداد بازدید

196

تعداد پرسش ها

0

افزودن به لیست علاقه مندی ها


برچسب ها :


اشتراک گذاری این مطلب
سامان محمدپور
در مورد نویسنده : موفقیت بستگی به تلاش هر شخص داره، هممون ب همون اندازه که تلاش کردیم موفق شدیم.

تفاوت بین copy و view در ماژول NumPy

تفاوت بین copy و view در ماژول NumPy

زمان مطالعه

5 دقیقه

تعداد بازدید

196

تعداد پرسش ها

0

افزودن به لیست علاقه مندی ها


برچسب ها :


اشتراک گذاری این مطلب

تفاوت بین copy و view در ماژول NumPy

تفاوت اساسی بین کپی یک آرایه و نمای آن این است که، کپی از یک آرایه، یک آرایه جدید ایجاد می کند اما نمای یک آرایه فقط یک نما از آرایه اصلی است.

کپی کردن از آرایه باعث می شود که یک نسخه از آرایه را داشته باشیم و تغییرات در کپی آرایه تاثیری بر آرایه اصلی ندارد و هر گونه تغییری در آرایه اصلی هم ایجاد شود تاثیری در کپی آرایه ندارد.

در حالی که نمای آرایه مالکیتی بر نسخه از آرایه اصلی ندارد و هر گونه تغییر در نمای آرایه بر روی آرایه اصلی نیز اعمال می شود، هر گونه تغییر در آرایه اصلی هم بر روی نمای آرایه اعمال خواهد شد.

Copy آرایه

مثال: در زیر یک کپی از یک آرایه ایجاد کردیم، تغییراتی در آن ایجاد کردیم و آن را با آرایه اصلی مقایسه کردیم.

 


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

 

Copy آرایه

 

نکته: نسخه کپی نباید تحت تاثیر تغییرات در آرایه اصلی قرار بگیرد.

View آرایه

مثال: در زیر یک نما از یک آرایه ایجاد کردیم، تغییراتی در آن ایجاد کردیم و آن را با آرایه اصلی مقایسه کردیم.

 

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

 

View آرایه

 

نکته: نمای آرایه باید تحت تاثیر تغییرات در آرایه اصلی قرار بگیرد.

ایجاد تغییرات در 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 به آرایه اصلی اشاره می کند.

مثال: در زیر مقدار ویژگی 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 را برگشت می دهد و در صورت نما بودن، آرایه اصلی را برگشت می دهد.

خب به پایان یکی دیگر از مقالات مهم و اساسی در ماژول NumPy رسیدیم.

در مقاله بعدی به بررسی اشکال آرایه در ماژول NumPy می پردازیم.

سامان محمدپور
در مورد نویسنده : موفقیت بستگی به تلاش هر شخص داره، هممون ب همون اندازه که تلاش کردیم موفق شدیم.


پرسش و پاسخ
0
دوره پیشنهادی
دوره پیشنهادی