ספריית numpy ועיבוד תמונה#

בשיעור זה ניפגש לראשונה עם המושג ספרייה (Library) — אוסף של קוד מוכן מראש: פונקציות, מחלקות וכלים שנכתבו כדי לפתור בעיות נפוצות ולחסוך מאיתנו את הצורך “להמציא את הגלגל מחדש”. הספרייה הראשונה שנכיר היא numpy, המאפשרת ביצוע חישובים מתמטיים יעילים במיוחד ועבודה עם מבני נתונים גדולים. בהמשך הקורס נעמיק גם בהיכרות עם ספרייה חשובה נוספת — pandas, המשמשת לעיבוד וניתוח נתונים.

מעניין לדעת!

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

טקסט המופיע למטה בסגול מציין קטעים המופיעים בסרטון

ניתן להיעזר בו כדי לחזור על התכנים או לעיין בהם שוב.

מהי ספריית numpy?#

ספריית numpy (קיצור של Numeric Python) היא ספריית ליבה בפייתון לעבודה עם נתונים מספריים.
היא מספקת מבנה נתונים מרכזי – מערך (ndarray/np.array) – שמאפשר לנהל ולעבד כמויות גדולות של נתונים בצורה יעילה הרבה יותר מאשר רשימות רגילות של פייתון.
בנוסף, היא כוללת אוסף עשיר של פעולות מתמטיות, אלגבריות וסטטיסטיות על וקטורים, מטריצות ומערכים רב־ממדיים.
למעשה, numpy מהווה את התשתית שעליה נבנו ספריות רבות בתחומים כמו מדעי הנתונים, למידת מכונה, חישובים מדעיים ואף בינה מלאכותית.

במהלך נושא זה, ניעזר ב-numpy גם עבור עריכת תמונות, או במילים אחרות - עיבוד תמונה. למשל, נראה כיצד ניתן לשתמש בה כדי להחשיך תמונה, להוסיף לה רעש ועוד.

היתרונות של השימוש בnp.array#

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

np.array פותח במיוחד על מנת לתמוך בפעולות וקטוריות. הדבר בא לידי ביטוי בשני אופנים:

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

  • כפי שתראו בהמשך, numpy מאפשרת לכתוב חישובים מורכבים בכמה שורות קצרות ונקיות, במקום מספר רב יותר של לולאות מקוננות ומסורבלות. התוצאה היא תחביר שמתקרב יותר לשפה טבעית לחישובים מתמטיים.

כיצד ניתן להשתמש בספרית numpy?#

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

אם אתם משתמשים בסביבות כמו Anaconda ודומיה, הספרייה כבר מותקנת מראש. ולכן, על מנת להשתמש בספריה, כל שעלינו לעשות הוא לייבא אותה בתחילת התוכנית באופן הבא:

import numpy as np

לאחר הרצת שורה זו, נוכל לגשת לכל הפונקציות והיכולות של הספרייה דרך הקיצור np. ביחידות הבאות נראה דוגמאות לשימוש במחלקה.

לדוגמא, אם נרצה לקרוא לפונקציית הספרייה foo, או למחלקת הספרייה lib. נוכל לעשות זאת באופן הבא:

np.foo()
obj = np.lib()