NumPy Apply Function

Numpy Apply Function



הספרייה המובנית שמציע Python, המכונה NumPy, מאפשרת לנו לבנות את המערכים הרב-ממדיים, לשנות אותם ולבצע עליהם חישובים אריתמטיים שונים. פונקציית היישום מסופקת גם על ידי חבילת NumPy. מקרה השימוש הטיפוסי של פונקציית היישום דומה לתרחיש שבו אנו רוצים לחתוך מערך ולבצע כמה פעולות על כל רכיב ברשימה, למשל, אם ברצוננו ליישר כל פריט בשורה. כמובן, ב-Python, אנו יודעים ש-for-loops איטיות ולכן נרצה להימנע מהן במידת האפשר. ניתן להשתמש בפונקציה 'החל' אם ברצונך לבצע את אותה פעולה בכל שורה או עמודה של מסגרת נתונים. במילים אחרות, הוא עושה את מה שאתה רוצה לעשות עם for-loop מבלי שתצטרך לכתוב for-loop.

ישנן שתי שיטות להחיל כל פונקציה על המערך בהתאם לתנאי. אנו יכולים ליישם את הפונקציה 'החל על הציר' שהיא שימושית כאשר אנו מיישמים את הפונקציה על כל אלמנט של המערך אחד אחד, והיא שימושית עבור מערכים n-ממדיים. השיטה השנייה היא 'להחיל לאורך הציר' אשר חלה על מערך חד מימדי.

תחביר:

שיטה 1: למרוח לאורך הציר

רדום. להחיל_לאורך_ציר ( 1d_function , צִיר , arr , *טיעונים , **קווארגס )

בתחביר, יש לנו את הפונקציה 'numpy.apply' שאליה נעביר חמישה ארגומנטים. הארגומנט הראשון שהוא '1d_function' פועל על המערך החד-ממדי, הנדרש. בעוד שהארגומנט השני, ה'ציר', הוא זה שעליו ציר אתה רוצה לחתוך את המערך ולהחיל את הפונקציה הזו. הפרמטר השלישי הוא 'arr' שהוא המערך הנתון עליו אנו רוצים להחיל את הפונקציה. בעוד שה-'*args' ו-'*kwargs' הם הארגומנטים הנוספים שאין צורך להוסיף.







דוגמה 1:

לקראת הבנה טובה יותר של שיטות 'החל', אנו מבצעים דוגמה כדי לבדוק את פעולתן של שיטות היישום. במקרה זה, אנו מבצעים את הפונקציה 'apply_along_Axis'. בואו נמשיך לצעד הראשון שלנו. ראשית, אנו כוללים את ספריות ה-NumPy שלנו בתור np. ואז, אנו יוצרים מערך בשם 'arr' שמכיל מטריצה ​​3×3 עם ערכי מספר שלמים שהם '8, 1, 7, 4, 3, 9, 5, 2 ו-6'. בשורה הבאה, אנו יוצרים משתנה בשם 'מערך' שאחראי על החזקת התוצאה של הפונקציה apply_along_Axis.



לפונקציה הזו, נעביר שלושה ארגומנטים. הראשון הוא הפונקציה שאנחנו רוצים להחיל על המערך, במקרה שלנו זו הפונקציה הממוינת כי אנחנו רוצים שהמערך שלנו יהיה ממוין. לאחר מכן, נעביר את הארגומנט השני '1' שפירושו שאנו רוצים לחתוך את המערך שלנו לאורך ציר=1. לאסלטי, אנחנו עוברים את המערך שיש למיין במקרה הזה. בסוף הקוד, אנו פשוט מדפיסים את שני המערכים - המערך המקורי וכן המערך שנוצר - המוצגים באמצעות המשפט print() .



יְבוּא רדום כפי ש לְמָשָׁל

arr = לְמָשָׁל מַעֲרָך ( [ [ 8 , 1 , 7 ] , [ 4 , 3 , 9 ] , [ 5 , שתיים , 6 ] ] )

מַעֲרָך = לְמָשָׁל להחיל_לאורך_ציר ( מְמוּיָן , 1 , arr )

הדפס ( 'המערך המקורי הוא:' , arr )

הדפס ( 'המערך הממוין הוא:' , מַעֲרָך )





כפי שאנו יכולים לראות בפלט הבא, הצגנו את שני המערכים. בראשון, הערכים ממוקמים באופן אקראי בכל שורה של המטריצה. אבל בשנייה, אנחנו יכולים לראות את המערך הממוין. מאז שעברנו את הציר '1', הוא לא ממיין את המערך השלם אבל הוא ממיין אותו לפי השורה כפי שמוצג. כל שורה ממוינת. השורה הראשונה במערך הנתון היא '8, 1 ו-7'. בעוד במערך הממוין, השורה הראשונה היא '1, 7 ו-8'. אותו דבר, כל שורה ממוינת.



שיטה 2: למרוח על הציר

רדום. ליישם_על_צירים ( func , א , צירים )

בתחביר הנתון, יש לנו פונקציה numpy.apply_over_axis שאחראית להחלת הפונקציה על הציר הנתון. בתוך הפונקציה apply_over_axis, אנו מעבירים שלושה ארגומנטים. הראשון הוא הפונקציה שיש לבצע. השני הוא המערך עצמו. והאחרון הוא הציר שעליו אנו רוצים ליישם את הפונקציה.

דוגמה 2:

במקרה הבא, אנו מבצעים את השיטה השנייה של פונקציית 'החל' בה אנו מחשבים את סכום המערך התלת מימדי. דבר אחד שצריך לזכור הוא שהסכום של שני מערכים לא אומר שאנחנו מחשבים את כל המערך. בחלק מהמערכים, אנו מחשבים את הסכום בשורה, כלומר נוסיף את השורות ונוציא מהן את האלמנט הבודד.

בואו נתקדם לקוד שלנו. תחילה אנו מייבאים את חבילת NumPy ולאחר מכן יוצרים משתנה המחזיק את המערך התלת מימדי. במקרה שלנו, המשתנה הוא 'arr'. בשורה הבאה, אנו יוצרים משתנה נוסף המחזיק את המערך המתקבל של הפונקציה application_over_axis. אנו מקצים את הפונקציה apply_over_Axis למשתנה 'arr' עם שלושה ארגומנטים. הארגומנט הראשון הוא הפונקציה המובנית של NumPy לחישוב הסכום שהוא np.sum. הפרמטר השני הוא המערך עצמו. הארגומנט השלישי הוא הציר שעליו מיושמת הפונקציה, במקרה זה יש לנו ציר '[0, 2]'. בסוף הקוד, אנו מבצעים את שני המערכים באמצעות המשפט print() .

יְבוּא רדום כפי ש לְמָשָׁל

arr = לְמָשָׁל מַעֲרָך ( [ [ [ 6 , 12 , שתיים ] , [ שתיים , 9 , 6 ] , [ 18 , 0 , 10 ] ] ,

[ [ 12 , 7 , 14 ] , [ שתיים , 17 , 18 ] , [ 0 , עשרים ואחת , 8 ] ] ] )

מַעֲרָך = לְמָשָׁל ליישם_על_צירים ( לְמָשָׁל סְכוּם , arr , [ 0 , שתיים ] )

הדפס ( 'המערך המקורי הוא:' , arr )

הדפס ( 'סכום המערך הוא:' , מַעֲרָך )

כפי שמוצג באיור הבא, חישבנו כמה מהמערכים התלת מימדיים שלנו באמצעות הפונקציה apply_over_axis. המערך הראשון המוצג הוא המערך המקורי בצורת '2, 3, 3' והשני הוא סכום השורות. סכום השורה הראשונה הוא '53', השני הוא '54' והאחרון הוא '57'.

סיכום

במאמר זה, למדנו כיצד נעשה שימוש בפונקציית היישום ב-NumPy וכיצד אנו יכולים ליישם את הפונקציות השונות על מערכים לאורך הציר או מעליו. קל להחיל כל פונקציה בשורה או בעמודה הרצויה על ידי חיתוך שלהן באמצעות שיטות 'החל' שמסופקות על ידי NumPy. זוהי דרך יעילה כאשר איננו צריכים ליישם אותה על כל המערך. אנו מקווים שפוסט זה מועיל בלימוד כיצד להשתמש בשיטת היישום.