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