بخش قبلی: ساخت آرایه با استفاده از نامپای
دسترسی به عناصر آرایهی ساختهشده به وسیلهی numpy مانند سایر آرایههاست. با اشاره به ایندکس درایهای خاص از آرایه میتوان به محتویات آن دسترسی داشت. توجه داشته باشید که ایندکسها یا همان شماره خانهها از صفر شروع میشود. در تکه کد زیر، اولین عنصر از آرایه ساختهشده به وسیلهی numpy را چاپ میکنیم:
1 2 3 4 5 |
import numpy as np arr = np.array([1, 2, 3, 4]) print(arr[]) |
دسترسی به عناصر آرایه دوبعدی در numpy
برای دسترسی به عناصر آرایه دوبعدی، باید از دو عدد صحیح که به وسیله کاما از هم جدا شدهاند استفاده کرد؛ عدد اول نشاندهندهی شماره آرایه یک بعدی داخلی و عدد دوم نشاندهندهی عنصر مورد نظر است. به عنوان مثال در تکه که زیر، عنصر دوم از سطر اول (اولین آرایه یک بعدی داخلی) چاپ میشود:
1 2 3 4 5 |
import numpy as np arr = np.array([[1,2,3,4,5], [6,7,8,9,10]]) print('2nd element on 1st dim: ', arr[, 1]) |
در کد زیر نیز، پنجمین درایه از بعد دوم چاپ میشود:
1 2 3 4 5 |
import numpy as np arr = np.array([[1,2,3,4,5], [6,7,8,9,10]]) print('5th element on 2nd dim: ', arr[1, 4]) |
دسترسی به عناصر آرایه سه بعدی در numpy
برای دسترسی به عناصر آرایه سه بعدی، باید از سه عدد صحیح که به وسیله کاما از هم جدا شدهاند استفاده کرد؛ عدد اول نشاندهندهی شماره آرایه دوبعدی داخلی، عدد دوم نشاندهندهی شماره آرایه یک بعدی داخل آرایه دوبعدی انتخابشده و عدد سوم نشاندهندهی عنصر مد نظر است. به عنوان مثال در تکه کد زیر، در داخل اولین آرایه دوبعدی داخلی، دومین آرایه یک بعدی انتخاب میشود. در نهایت سومین عنصر از آرایه یک بعدی مد نظر یعنی عدد ۶ چاپ میشود:
1 2 3 4 5 |
import numpy as np arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]) print(arr[, 1, 2]) |
دسترسی به عناصر آرایه numpy از آخر
برای دسترسی به عناصر آرایه از آخر، از ایندکس منفی استفاده کنید. به عنوان مثال در تکه کد زیر، از آرایه یک بعدی دوم، عنصر آخری چاپ میشود:
1 2 3 4 5 |
import numpy as np arr = np.array([[1,2,3,4,5], [6,7,8,9,10]]) print('Last element from 2nd dim: ', arr[1, -1]) |
اسلایسینگ آرایه یک بعدی در numpy
اسلایسنگ در پایتون به این معناست که از عنصری خاص در آرایه تا درایهی خاص دیگری از آن را جدا کنیم. برای این کار میتوانید از قوانین زیر استفاده نمایید:
- به جای یک عدد برای ایندکس، از دستور [پایان:آغاز] استفاده کنید. به این ترتیب از عدد آغاز تا یک عدد قبل پایان (خود پایان جدا نمیشود) جدا میشود.
- برای آن که گام را مشخص کنیم، میتوان از این دستور استفاده کرد: [گام:پایان:آغاز]
- دیفالت برای آغاز، عدد ۰ است.
- دیفالت برای پایان، پایان بعد آرایه است.
- دیفالت برای گام، عدد ۱ است.۷
برای روشن شدن موضوع، به مثالهای زیر توجه کنید:
1 2 3 4 5 |
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7]) print(arr[1:5]) |
در کد بالا، از عنصر دوم آرایه تا عنصر پنجم (ایندکس ۴) چاپ میشود.
1 2 3 4 5 |
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7]) print(arr[4:]) |
در کد بالا از عنصر پنجم تا آخر آرایه چاپ میشود.
1 2 3 4 5 |
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7]) print(arr[-3:-1]) |
در کد بالا، از عنصر سوم از انتهای آرایه، تا عنصر اول از انتهای آرایه چاپ میشود.
1 2 3 4 5 |
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7]) print(arr[1:5:2]) |
در کد بالا، با گام ۲، از عنصر دوم تا عنصر چهارم چاپ میشود.
اسلایسینگ آرایه دو بعدی در numpy
اسلایسینگ در آرایه دو بعدی نیز امکانپذیر است. برای آشنایی با این موضوع، به مثالهای زیر توجه کنید:
1 2 3 4 5 |
import numpy as np arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]) print(arr[1, 1:4]) |
1 2 3 4 5 |
import numpy as np arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]) print(arr[:2, 2]) |
1 2 3 4 5 |
import numpy as np arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]) print(arr[:2, 1:4]) |