NumPy Searching Arrays

جستجو آرایه‌ها

می‌توانید آرایه‌ها را برای یافتن یک مقدار مشخص جستجو کنید و در صورت موجود بودن آن در آرایه شماره ایندکس آن را برگردانید.

برای جستجو در آرایه از تابع شیء where() استفاده می‌شود.

در مثال زیر دنبال جایی هستیم که مقدار آرایه در آن ایندکس برابر ۴ است.


import numpy as np

arr = np.array([1, 2, 3, 4, 5, 4, 4])

x = np.where(arr == 4)

print(x)

خروجی:

چنانکه ملاحظه می‌کنید خروجی کد بالا یک تاپل است که نشان می‌دهد ۴ در ایندکس‌های ۳، ۵ و ۶ وجود دارد.

در زیر مثال دیگری آورده شده است که در آن ایندکس‌هایی برگردانده می‌شوند که مقدار موجود در آن‌ها زوج باشد.


import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

x = np.where(arr%2 == 0)

print(x)

خروجی:

تابع شیء ()searchsorted

تابع شیءای به اسم searchsorted() وجود دارد که یک جستجوی دودویی (باینری) را در آرایه انجام می‌دهد. خروجی آن ایندکس‌هایی هستند که مقدار مشخص شده باید در آنجا قرار داشته باشد تا ترتیب جستجو حفظ شود.

پیش‌فرض استفاده از تابع شیء searchsorted() آن است که روی آرایه‌های مرتب شده (sorted arrays) جستجو انجام می‌شود.

در مثال زیر دنبال ایندکسی هستیم که عدد ۷ باید آنجا قرار بگیرد.


import numpy as np

arr = np.array([6, 7, 8, 9])

x = np.searchsorted(arr, 7)

print(x)

خروجی:

خروجی کد بالا این را به ما می‌گوید که عدد ۷ باید در ایندکس ۱ قرار داده شود تا نحوه‌ مرتب شدن آرایه حفظ شود.

جستجو از سمت چپ شروع شده و اولین ایندکسی که بعد از آن دیگر عدد ۷ بزرگتر نیست برگردانده می‌شود. یعنی چپ‌ترین ایندکس ممکن برگردانده می‌شود. اگر بخواهید جستجو از سمت راست انجام شود و راست‌ترین ایندکس موجود برگردانده شود به صورت زیر عمل کنید.


import numpy as np

arr = np.array([6, 7, 8, 9])

x = np.searchsorted(arr, 7, side='right')

print(x)

خروجی:

جستجو برای بیش از یک مقدار

اگر بخواهید جستجو را برای بیش از یک مقدار انجام دهید، کافی است که مقادیر مورد نظر خود را در یک آرایه بنویسید، مانند مثال زیر.


import numpy as np

arr = np.array([1, 3, 5, 7])

x = np.searchsorted(arr, [2, 4, 6])

print(x)

خروجی:

مقدار برگردانده شده یک آرایه است. چنانکه ملاحظه می‌کنید مقادیر این آرایه ایندکس‌هایی هستند که باید اعداد ۲، ۴ و ۶ در آنجا قرار بگیرند تا نحوه مرتب شدن آرایه حفظ شود.