אינדוקס לפי ממדים
שיעור 13 מתוך 18 בקורס יסודות NumPy של Coddy.
NumPy תומכת בכלי עוצמתי במיוחד — אינדוקס ממדים.
כדי לאנדקס ממד, משתמשים בנקודתיים :. נקודתיים כוללות את כל האיברים באינדקס המסוים שבו הן מופיעות. לדוגמה, נניח שיש לנו מערך בעל הצורה ary.shape # --> (2, 1, 3, 1); הצבת נקודתיים : ב-ary[:, 0, 0, 0] תבחר את שני האיברים השמאליים ביותר של הצורה, ועבור כל אחד מהם תחלץ את האיבר באינדקס אפס בשאר הממדים.
הערה: מיקום הנקודתיים בתוך brackets [] מציין את הממד שאנו מאנדקסים, כלומר
ary[:, 0, 0, 0]אינדקס של הממד הרביעיary[0, :, 0, 0]אינדקס של הממד השלישיary[0, 0, :, 0]אינדקס של הממד השניary[0, 0, 0, :]אינדקס של הממד הראשוןary[:, :, 0, 0]אינדקס של הממד הרביעי ושל הממד השלישי- וכו׳
דוגמה 1
ary = np.array([
[1, 2],
[3, 4]
])
ary[:, 0] # --> [1, 3]
ary[0, :] # --> [1, 2]נקודתיים בוחרות את כל האיברים באינדקס שצוין וממשיכות לאינדקס הבא
במקרה שלנו:
ary[:, 0]אנחנו בוחרים את כל האיברים הראשונים, ומכל אחד מהם בוחרים את האיבר באינדקס 0ary[0, :]אנחנו בוחרים את האיבר הראשון, ומתוכו בוחרים את כל האיברים.
דוגמה 2
מערך תלת־ממדי
ary = np.array([
[[1, 2], [3, 4]],
[[5, 6], [7, 8]]
])
ary[:, 0, :] # --> [[1, 2], [5, 6]]
ary[:, :, 0] # --> [[1, 3], [5, 7]]ary[:, 0, :]אנחנו בוחרים את כל האיברים, אחר כך בוחרים את האיבר הראשון, ולבסוף בוחרים את כל מה שיש בוary[:, :, 0]אנחנו בוחרים את כל האיברים, אחר כך את כל האיברים האלה, ולבסוף את האיבר הראשון בכל אחד מהם.- האם תוכלו לנחש מה יהיה הפלט של
ary[0, :, :]
דוגמה 3
קבלת האינדקס הראשון והאחרון מכל שורה
x = np.array([
[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23],
])
x[:, np.array([0, -1])]
>>> [0, 5, 6, 11, 12, 17, 18, 23]דוגמה 4
מערך בעל הצורה (2, 1, 3, 1), בדיוק כמו בדוגמה הפותחת
ary = np.array([
[
[
[1],[2],[3]
]
],
[
[
[4],[5],[6]
]
]
])
ary[:, 0, 0, 0] # --> [1, 4]
ary[0, :, 0, 0] # --> [1]
ary[0, 0, :, 0] # --> [1, 2, 3]
ary[0, 0, 0, :] # --> [1]הערה: אפשר להשתמש גם בתחביר החיתוך: start:stop:step שלמדנו בשיעור Slicing
ary[:, 0:5, 2:3, :]
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
אתגר
קלבהינתן מערך תלת־ממדי ary, אחזר את המספרים השני, השלישי והרביעי מכל מערך חד־ממדי
נסו בעצמכם
import numpy as np
'''
ary looks like:
array([[[ 0, 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, 26, 27, 28, 29],
[30, 31, 32, 33, 34, 35, 36, 37, 38, 39]],
[[40, 41, 42, 43, 44, 45, 46, 47, 48, 49],
[50, 51, 52, 53, 54, 55, 56, 57, 58, 59]],
[[60, 61, 62, 63, 64, 65, 66, 67, 68, 69],
[70, 71, 72, 73, 74, 75, 76, 77, 78, 79]],
[[80, 81, 82, 83, 84, 85, 86, 87, 88, 89],
[90, 91, 92, 93, 94, 95, 96, 97, 98, 99]]])
'''
ary = np.arange(0, 100).reshape(5, 2, 10) # don't change ary
res = ary[] # <-- Complete indices
print(str(res).replace("\n", "")) # don't change this lineכל השיעורים ביחידה יסודות NumPy
3אינדוקס מערך NumPy
אינדוקס בסיסיחיתוךאינדוקס מערכיםאינדוקס לפי ממדיםאינדוקס בוליאניאינדוקס לפי תנאים מרוביםתרגלו בעצמכם: קומפיילר Python אונליין