آموزش کپی ها و Views در NumPy
آموزش کپی ها و Views در NumPy
در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش کپی ها و Views در NumPy خواهیم پرداخت.
پیشنهاد ویژه : پکیج آموزش پروژه محور پایتون
هنگام اجرای توابع، برخی از آنها یک کپی از آرایه ورودی را برمی گردانند، در حالی که برخی دیگر نمای را برمی گردانند. وقتی محتویات به طور فیزیکی در مکان دیگری ذخیره می شوند، به آن Copy می گویند. اگر از طرف دیگر، نمای متفاوتی از همان محتوای حافظه ارائه شود ، ما آن را به عنوان View صدا می کنیم.
No Copy
تکالیف ساده کپی آرایه را ایجاد نمی کنند. در عوض، از همان ()id آرایه اصلی برای دسترسی به آن استفاده می کند. () id یک شناسه جهانی از شی Python برمی گرداند ، شبیه به اشاره گر در C.
بعلاوه، هر تغییری در هر یک از موارد دیگر منعکس می شود. به عنوان مثال ، تغییر شکل یکی باعث تغییر شکل دیگری نیز می شود.
مثال
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
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 |
این خروجی زیر را تولید می کند –
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Our array is: [0 1 2 3 4 5] Applying id() function: 139747815479536 a is assigned to b: [0 1 2 3 4 5] b has same id(): 139747815479536 Change shape of b: [[0 1] [2 3] [4 5]] Shape of a also gets changed: [[0 1] [2 3] [4 5]] |
View یا کپی سطحی
NumPy دارای متد ()ndarray.view است که یک شی آرایه جدید است که به همان داده های آرایه اصلی نگاه می کند. بر خلاف مورد قبلی ، تغییر در ابعاد آرایه جدید ابعاد اصلی را تغییر نمی دهد.
مثال
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
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 |
این خروجی زیر را تولید می کند –
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Array a: [[0 1] [2 3] [4 5]] Create view of a: [[0 1] [2 3] [4 5]] id() for both the arrays are different: id() of a: 140424307227264 id() of b: 140424151696288 Shape of b: [[0 1 2] [3 4 5]] Shape of a: [[0 1] [2 3] [4 5]] |
مثال
1 2 3 4 5 6 7 8 9 |
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 |
این خروجی زیر را تولید می کند –
1 2 3 4 5 6 7 8 9 |
Our array is: [[10 10] [ 2 3] [ 4 5]] Create a slice: [[10 10] [ 2 3] [ 4 5]] |
کپی عمیق
تابع ()ndarray.copy یک کپی عمیق ایجاد می کند. این یک کپی کامل از آرایه و داده های آن است و با آرایه اصلی به اشتراک گذاشته نمی شود.
مثال
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
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 |
این خروجی زیر را تولید می کند –
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Array a is: [[10 10] [ 2 3] [ 4 5]] Create a deep copy of a: Array b is: [[10 10] [ 2 3] [ 4 5]] Can we write b is a False Change the contents of b: Modified array b: [[100 10] [ 2 3] [ 4 5]] a remains unchanged: [[10 10] [ 2 3] [ 4 5]] |
لیست جلسات قبل آموزش NumPy
- آموزش NumPy
- معرفی NumPy
- آموزش محیط کار NumPy
- آموزش شی Ndarray در NumPy
- آموزش انواع داده ها در NumPy
- آموزش ویژگی های آرایه در NumPy
- آموزش روال ایجاد آرایه در NumPy
- آموزش ایجاد آرایه از داده های موجود در NumPy
- آموزش ایجاد آرایه از محدوده های عددی در NumPy
- آموزش شاخص گذاری و برش در NumPy
- آموزش شاخص گذاری پیشرفته در NumPy
- آموزش Broadcasting در NumPy
- آموزش تکرار در یک آرایه در NumPy
- آموزش دستکاری آرایه در NumPy
- آموزش اپراتورهای دودویی در NumPy
- آموزش توابع رشته ای در NumPy
- آموزش توابع ریاضی در NumPy
- آموزش عملیات حسابی در NumPy
- آموزش توابع آماری در NumPy
- آموزش مرتب سازی، جستجو و توابع شمارش در NumPy
- آموزش Byte Swapping در NumPy
یک دیدگاه
-
2 سال پیش
خوبه😉
دیدگاه شما