מודול numpy של Python מספק פונקציה בשם numpy.pad() לביצוע ריפוד במערך. לפונקציה זו מספר פרמטרים נדרשים ואופציונליים.
תחביר:
numpy.pad(array, pad_width, mode='constant', **kwargs)
פרמטרים:
array: array_like
זהו מערך המקור שאנו רוצים לרפד.
pad_width: int, רצף או array_like
פרמטר זה מגדיר את מספר הערכים המרופדים בקצוות של כל ציר. רוחבי המשטח הייחודיים עבור כל ציר מוגדרים כ-(before_1, after_1), (before_2, after_2), ... (before_N, after_N)). עבור כל ציר, ((לפני, אחרי)) יטופל זהה לרפידה לפני ואחרי. עבור כל הצירים, ה-int, או (פד,) הוא קיצור דרך אל לפני = אחרי = רוחב הכרית.
מצב: str או function (אופציונלי)
לפרמטר זה יש אחד מערכי המחרוזת הבאים:
'קבוע' (ברירת מחדל)
מערך דינמי של java
אם נקצה ערך קבוע לפרמטר מצב, הריפוד יעשה עם ערך קבוע.
'קָצֶה'
זהו ערך הקצה של המערך. הריפוד ייעשה עם ערך קצה זה.
'רמפה_לינארית'
ערך זה משמש לביצוע ריפוד עם הרמפה הליניארית בין ערך הקצה לערך הקצה.
'מַקסִימוּם'
ערך פרמטר זה מבצע ריפוד על ידי שימוש בערך המקסימלי של חלק וקטור או כולו, לאורך כל ציר.
'מתכוון'
ערך פרמטר זה מבצע ריפוד באמצעות הערך הממוצע של חלק וקטור או כולו, לאורך כל ציר.
'חֲצִיוֹן'
ערך פרמטר זה מבצע ריפוד באמצעות הערך החציוני של חלק וקטור או כולו, לאורך כל ציר.
'מִינִימוּם'
ערך פרמטר זה מבצע ריפוד באמצעות הערך המינימלי של חלק וקטור או כולו, לאורך כל ציר.
'משקף'
ערך זה מרפד את המערך באמצעות השתקפות וקטורית, המשתקפת על ערכי וקטור ההתחלה והסיום, לאורך כל ציר.
'סימטרי'
ערך זה משמש לרפד את המערך באמצעות השתקפות וקטורית, המשתקפת לאורך קצה המערך.
'לַעֲטוֹף'
ערך זה משמש לביצוע ריפוד של המערך באמצעות גלישת הווקטור לאורך הציר. ערכי ההתחלה משמשים לריפוד הסוף, וערכי הסיום מרפדים את ההתחלה.
'ריק'
ערך זה משמש כדי לרפד את המערך בערכים לא מוגדרים.
stat_length: int או רצף (אופציונלי)
פרמטר זה משמש ב'מקסימום', 'מינימום', 'ממוצע', 'חציון'. הוא מגדיר את מספר הערכים בכל ציר קצה, המשמש לחישוב הערך הסטטי.
constant_values: סקלרי או רצף (אופציונלי)
פרמטר זה משמש ב'קבוע'. הוא מגדיר את הערכים להגדרת הערכים המרופדים לכל ציר.
end_values: סקלרי או רצף (אופציונלי)
פרמטר זה משמש ב-'linear_ramp'. הוא מגדיר את הערכים המשמשים עבור הערך האחרון של linear_ramp ויהוו את הקצה של המערך המרופד.
reflect_type: זוגי או אי זוגי (אופציונלי)
פרמטר זה משמש ב'סימטרי' ו'השתקפות'. כברירת מחדל, ה-reflect_type הוא 'אפילו' עם השתקפות ללא שינוי סביב ערך הקצה. על ידי הפחתת הערכים המשתקפים מפי שניים מערך הקצה, נוצר החלק המורחב של המערך עבור הסגנון ה'מוזר'.
החזרות:
כרית: ndarray
פונקציה זו מחזירה את המערך המרופד בדרגה שווה למערך, שצורתו גדלה בהתאם ל-pad_width.
דוגמה 1:
import numpy as np x = [1, 3, 2, 5, 4] y = np.pad(x, (3, 2), 'constant', constant_values=(6, 4)) y
תְפוּקָה:
array([6, 6, 6, 1, 3, 2, 5, 4, 4, 4])
בקוד למעלה
- ייבאנו numpy עם שם הכינוי np.
- יצרנו רשימה של ערכים x.
- הכרזנו על המשתנה y והקצנו את הערך המוחזר של הפונקציה np.pad() .
- עברנו את הרשימה x, pad_width, הגדרנו את המצב ל קָבוּעַ ו קבועים_ערכים בפונקציה.
- לבסוף, ניסינו להדפיס את הערך של y.
בפלט, הוא מראה ndarray מרופד בגודל ובערכים המוגדרים.
דוגמה 2:
import numpy as np x = [1, 3, 2, 5, 4] y = np.pad(x, (3, 2), 'edge') y
תְפוּקָה:
array([1, 1, 1, 1, 3, 2, 5, 4, 4, 4])
דוגמה 3:
import numpy as np x = [1, 3, 2, 5, 4] y = np.pad(x, (3, 2), 'linear_ramp', end_values=(-4, 5)) y
תְפוּקָה:
array([-4, -2, 0, 1, 3, 2, 5, 4, 4, 5])
דוגמה 4:
import numpy as np x = [1, 3, 2, 5, 4] y = np.pad(x, (3,), 'maximum') y
תְפוּקָה:
array([5, 5, 5, 1, 3, 2, 5, 4, 5, 5, 5])
דוגמה 5:
import numpy as np x = [1, 3, 2, 5, 4] y = np.pad(x, (3,), 'mean') y
תְפוּקָה:
array([3, 3, 3, 1, 3, 2, 5, 4, 3, 3, 3])
דוגמה 6:
import numpy as np x = [1, 3, 2, 5, 4] y = np.pad(x, (3,), 'median') y
תְפוּקָה:
array([3, 3, 3, 1, 3, 2, 5, 4, 3, 3, 3])
דוגמה 7:
import numpy as np a = [[1, 2], [3, 4]] y = np.pad(x, (3,), 'minimum') y
תְפוּקָה:
array([[1, 1, 1, 1, 2, 1, 1], [1, 1, 1, 1, 2, 1, 1], [1, 1, 1, 1, 2, 1, 1], [3, 3, 3, 3, 4, 3, 3], [1, 1, 1, 1, 2, 1, 1], [1, 1, 1, 1, 2, 1, 1], [1, 1, 1, 1, 2, 1, 1]])
דוגמה 8:
import numpy as np def pad_with(vector, pad_width, iaxis, kwargs): padding_value = kwargs.get('padder', 10) vector[:pad_width[0]] = padding_value vector[-pad_width[1]:] = padding_value x = np.arange(6) x = x.reshape((3, 2)) y = np.pad(x, 3, pad_with) y
תְפוּקָה:
array([41, 31, 21, 11, 21, 31, 41, 51, 41, 31])
בקוד למעלה
תוכנית ירושה בפיתון
- ייבאנו numpy עם שם הכינוי np.
- יצרנו פונקציה pad_with עם וֶקטוֹר , pad_width , בציר , ו kwargs .
- הכרזנו על המשתנה pad_value כדי לקבל ערכי ריפוד מה- לקבל() פוּנקצִיָה.
- העברנו את ערכי הריפוד לחלק של הווקטור.
- יצרנו מערך x באמצעות הפונקציה np.arange() ושינינו את הצורה באמצעות הפונקציה reshape() .
- הכרזנו על משתנה y והקצנו את הערך המוחזר של הפונקציה np.pad() .
- עברנו את הרשימה x ואת pad_width בפונקציה
- לבסוף, ניסינו להדפיס את הערך של y.
בפלט, הוא מראה ndarray מרופד בגודל ובערכים המוגדרים.
דוגמה 9:
import numpy as np import numpy as np def pad_with(vector, pad_width, iaxis, kwargs): padding_value = kwargs.get('padder', 10) vector[:pad_width[0]] = padding_value vector[-pad_width[1]:] = padding_value x = np.arange(6) x = x.reshape((3, 2)) np.pad(x, 3, pad_with)
תְפוּקָה:
array([[10, 10, 10, 10, 10, 10, 10, 10], [10, 10, 10, 10, 10, 10, 10, 10], [10, 10, 10, 10, 10, 10, 10, 10], [10, 10, 10, 0, 1, 10, 10, 10], [10, 10, 10, 2, 3, 10, 10, 10], [10, 10, 10, 4, 5, 10, 10, 10], [10, 10, 10, 10, 10, 10, 10, 10], [10, 10, 10, 10, 10, 10, 10, 10], [10, 10, 10, 10, 10, 10, 10, 10]])
דוגמה 10:
import numpy as np import numpy as np def pad_with(vector, pad_width, iaxis, kwargs): ... pad_value = kwargs.get('padder', 10) ... vector[:pad_width[0]] = pad_value ... vector[-pad_width[1]:] = pad_value x = np.arange(6) x = x.reshape((3, 2)) np.pad(x, 3, pad_with, padder=100)
תְפוּקָה:
array([[100, 100, 100, 100, 100, 100, 100, 100], [100, 100, 100, 100, 100, 100, 100, 100], [100, 100, 100, 100, 100, 100, 100, 100], [100, 100, 100, 0, 1, 100, 100, 100], [100, 100, 100, 2, 3, 100, 100, 100], [100, 100, 100, 4, 5, 100, 100, 100], [100, 100, 100, 100, 100, 100, 100, 100], [100, 100, 100, 100, 100, 100, 100, 100], [100, 100, 100, 100, 100, 100, 100, 100]])