logo

numpy.where() ב-Python

המודול NumPy מספק פונקציה numpy.where() לבחירת אלמנטים על סמך תנאי. הוא מחזיר אלמנטים שנבחרו מ-a או b בהתאם לתנאי.

לדוגמה, אם כל הארגומנטים -> condition, a & b מועברים ב- numpy.where() אז זה יחזיר אלמנטים שנבחרו מ-a & b בהתאם לערכים במערך bool שהתנאי מניב.

אם רק התנאי מסופק, פונקציה זו היא קיצור לפונקציה np.asarray (condition).nonzero(). למרות שיש להעדיף את non-0 ישירות, מכיוון שהוא מתנהג נכון עבור תת מחלקות.

תחביר:

 numpy.where(condition[, x, y]) 

פרמטרים:

אלו הם הפרמטרים הבאים בפונקציה numpy.where():

כמה גדול מסך המחשב שלי

condition: array_like, bool

אם פרמטר זה מוגדר כ-True, תשואה x אחרת תניב y.

x, y: array_like:

כיצד לבצע סקריפט

פרמטר זה מגדיר את הערכים מהם ניתן לבחור. ה-x, y והתנאי צריכים להיות ניתנים לשידור לצורה כלשהי.

החזרות:

פונקציה זו מחזירה את המערך עם אלמנטים מ-x כאשר התנאי הוא True ואלמנטים מ-y במקום אחר.

דוגמה 1: np.where()

 import numpy as np a=np.arange(12) b=np.where(a<6,a,5*a) b < pre> <p> <strong>In the above code</strong> </p> <ul> <li>We have imported numpy with alias name np.</li> <li>We have created an array &apos;a&apos; using np.arange() function.</li> <li>We have declared the variable &apos;b&apos; and assigned the returned value of np.where() function.</li> <li>We have passed the array &apos;a&apos; in the function.</li> <li>Lastly, we tried to print the value of b.</li> </ul> <p>In the output, the values ranging from 0 to 5 remain the same as per the condition, and the other values have been multiplied with 5.</p> <p> <strong>Output:</strong> </p> <pre> array([ 0, 1, 2, 3, 4, 5, 30, 35, 40, 45, 50, 55]) </pre> <h3>Example 2: For multidimensional array</h3> <pre> import numpy as np a=np.arange(12) b=np.where([[True, False], [True, True]],[[1, 2], [3, 4]],[[9, 8], [7, 6]]) b </pre> <p> <strong>Output:</strong> </p> <pre> array([[1, 8], [3, 4]]) </pre> <h3>Example 3: Broadcasting x, y, and condition</h3> <pre> import numpy as np x, y = np.ogrid[:3, :4] a=np.where(x &gt; y, x, 10 + y) a </pre> <p> <strong>Output:</strong> </p> <pre> array([[10, 11, 12, 13], [ 1, 11, 12, 13], [ 2, 2, 12, 13]]) </pre> <p> <strong>In the above code</strong> </p> <ul> <li>We have imported numpy with alias name np.</li> <li>We have created an array &apos;a&apos; using np.arange() function. </li> <li>We declared the variable &apos;b&apos; and assigned the returned value of np.where() function.</li> <li>We have passed a multidimensional array of boolean as a condition and x and y as an integer arrays.</li> <li>Lastly, we tried to print the value of b.</li> </ul> <p>In the output, the x value has been compared to y value if it satisfied the condition, then it will be printed x value otherwise, it will print y value, which has passed as an argument in the where() function.</p> <h3>Example 4: Broadcasting specific value</h3> <pre> x=np.array([[0,1,2],[0,2,5],[0,4,8]]) y=np.where(x<4,x,-2) y < pre> <p> <strong>Output:</strong> </p> <pre> array([[ 0, 1, 2], [ 0, 2, -2], [ 0, -2, -2]]) </pre> <hr></4,x,-2)></pre></6,a,5*a)>

דוגמה 2: למערך רב מימדי

 import numpy as np a=np.arange(12) b=np.where([[True, False], [True, True]],[[1, 2], [3, 4]],[[9, 8], [7, 6]]) b 

תְפוּקָה:

 array([[1, 8], [3, 4]]) 

דוגמה 3: שידור x, y ותנאי

 import numpy as np x, y = np.ogrid[:3, :4] a=np.where(x &gt; y, x, 10 + y) a 

תְפוּקָה:

 array([[10, 11, 12, 13], [ 1, 11, 12, 13], [ 2, 2, 12, 13]]) 

בקוד למעלה

  • ייבאנו numpy עם שם הכינוי np.
  • יצרנו מערך 'a' באמצעות הפונקציה np.arange().
  • הכרזנו על המשתנה 'b' והקצינו את הערך המוחזר של הפונקציה np.where() .
  • עברנו מערך רב-ממדי של בוליאן כתנאי ו-x ו-y כמערכים שלמים.
  • לבסוף, ניסינו להדפיס את הערך של b.

בפלט, ערך x הושווה לערך y אם הוא עומד בתנאי, אז הוא יודפס ערך x אחרת, הוא ידפיס את ערך y, שעבר כארגומנט בפונקציה where() .

דוגמה 4: ערך ספציפי לשידור

 x=np.array([[0,1,2],[0,2,5],[0,4,8]]) y=np.where(x<4,x,-2) y < pre> <p> <strong>Output:</strong> </p> <pre> array([[ 0, 1, 2], [ 0, 2, -2], [ 0, -2, -2]]) </pre> <hr></4,x,-2)>