آموزش کپی ها و Views در NumPy

3 سال پیش
آموزش کپی ها و Views در NumPy

آموزش کپی ها و Views در NumPy

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش کپی ها و Views در NumPy خواهیم پرداخت.

پیشنهاد ویژه : پکیج آموزش پروژه محور پایتون

هنگام اجرای توابع، برخی از آنها یک کپی از آرایه ورودی را برمی گردانند، در حالی که برخی دیگر نمای را برمی گردانند. وقتی محتویات به طور فیزیکی در مکان دیگری ذخیره می شوند، به آن Copy می گویند. اگر از طرف دیگر، نمای متفاوتی از همان محتوای حافظه ارائه شود ، ما آن را به عنوان View صدا می کنیم.

No Copy

تکالیف ساده کپی آرایه را ایجاد نمی کنند. در عوض، از همان ()id آرایه اصلی برای دسترسی به آن استفاده می کند. () id یک شناسه جهانی از شی Python برمی گرداند ، شبیه به اشاره گر در C.

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

مثال

import numpy as np 
a = np.arange(6) 

print 'Our array is:' 
print a  

print 'Applying id() function:' 
print id(a)  

print 'a is assigned to b:' 
b = a 
print b  

print 'b has same id():' 
print id(b)  

print 'Change shape of b:' 
b.shape = 3,2 
print b  

print 'Shape of a also gets changed:' 
print a

 

این خروجی زیر را تولید می کند –

Our array is:
[۰ ۱ ۲ ۳ ۴ ۵]

Applying id() function:
۱۳۹۷۴۷۸۱۵۴۷۹۵۳۶

a is assigned to b:
[۰ ۱ ۲ ۳ ۴ ۵]
b has same id():
۱۳۹۷۴۷۸۱۵۴۷۹۵۳۶

Change shape of b:
[[۰ ۱]
 [۲ ۳]
 [۴ ۵]]

Shape of a also gets changed:
[[۰ ۱]
 [۲ ۳]
 [۴ ۵]]

 

View یا کپی سطحی 

NumPy دارای متد ()ndarray.view است که یک شی آرایه جدید است که به همان داده های آرایه اصلی نگاه می کند. بر خلاف مورد قبلی ، تغییر در ابعاد آرایه جدید ابعاد اصلی را تغییر نمی دهد.

مثال

import numpy as np 
# To begin with, a is 3X2 array 
a = np.arange(6).reshape(3,2) 

print 'Array a:' 
print a  

print 'Create view of a:' 
b = a.view() 
print b  

print 'id() for both the arrays are different:' 
print 'id() of a:'
print id(a)  
print 'id() of b:' 
print id(b)  

# Change the shape of b. It does not change the shape of a 
b.shape = 2,3 

print 'Shape of b:' 
print b  

print 'Shape of a:' 
print a

 

این خروجی زیر را تولید می کند –

Array a:
[[۰ ۱]
 [۲ ۳]
 [۴ ۵]]

Create view of a:
[[۰ ۱]
 [۲ ۳]
 [۴ ۵]]

id() for both the arrays are different:
id() of a:
۱۴۰۴۲۴۳۰۷۲۲۷۲۶۴
id() of b:
۱۴۰۴۲۴۱۵۱۶۹۶۲۸۸

Shape of b:
[[۰ ۱ ۲]
 [۳ ۴ ۵]]

Shape of a:
[[۰ ۱]
 [۲ ۳]
 [۴ ۵]]

 

 

مثال

import numpy as np 
a = np.array([[10,10], [2,3], [4,5]]) 

print 'Our array is:' 
print a  

print 'Create a slice:' 
s = a[:, :2] 
print s

 

این خروجی زیر را تولید می کند –

Our array is:
[[۱۰ ۱۰]
 [ ۲ ۳]
 [ ۴ ۵]]

Create a slice:
[[۱۰ ۱۰]
 [ ۲ ۳]
 [ ۴ ۵]]

 

کپی عمیق

تابع ()ndarray.copy  یک کپی عمیق ایجاد می کند. این یک کپی کامل از آرایه و داده های آن است و با آرایه اصلی به اشتراک گذاشته نمی شود.

مثال

import numpy as np 
a = np.array([[10,10], [2,3], [4,5]]) 

print 'Array a is:' 
print a  

print 'Create a deep copy of a:' 
b = a.copy() 
print 'Array b is:' 
print b 

#b does not share any memory of a 
print 'Can we write b is a' 
print b is a  

print 'Change the contents of b:' 
b[0,0] = 100 

print 'Modified array b:' 
print b  

print 'a remains unchanged:' 
print a

 

این خروجی زیر را تولید می کند –

Array a is:
[[۱۰ ۱۰]
 [ ۲ ۳]
 [ ۴ ۵]]

Create a deep copy of a:
Array b is:
[[۱۰ ۱۰]
 [ ۲ ۳]
 [ ۴ ۵]]
Can we write b is a
False

Change the contents of b:
Modified array b:
[[۱۰۰ ۱۰]
 [ ۲ ۳]
 [ ۴ ۵]]

a remains unchanged:
[[۱۰ ۱۰]
 [ ۲ ۳]
 [ ۴ ۵]]

 

منبع.

 

لیست جلسات قبل آموزش NumPy

  1. آموزش NumPy
  2. معرفی NumPy
  3. آموزش محیط کار NumPy
  4. آموزش شی Ndarray در NumPy
  5. آموزش انواع داده ها در NumPy
  6. آموزش ویژگی های آرایه در NumPy
  7. آموزش روال ایجاد آرایه در NumPy
  8. آموزش ایجاد آرایه از داده های موجود در NumPy
  9. آموزش ایجاد آرایه از محدوده های عددی در NumPy
  10. آموزش شاخص گذاری و برش در NumPy
  11. آموزش شاخص گذاری پیشرفته در NumPy
  12. آموزش Broadcasting در NumPy
  13. آموزش تکرار در یک آرایه در NumPy
  14. آموزش دستکاری آرایه در NumPy
  15. آموزش اپراتورهای دودویی در NumPy
  16. آموزش توابع رشته ای در NumPy
  17. آموزش توابع ریاضی در NumPy
  18. آموزش عملیات حسابی در NumPy
  19. آموزش توابع آماری در NumPy
  20. آموزش مرتب سازی، جستجو و توابع شمارش در NumPy
  21. آموزش Byte Swapping در NumPy
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه