البحث في مجموعات NumPy

البحث في المجموعة

يمكنك البحث (استرجاع) عن قيمة معينة في المجموعة وتحصل على الفهارس التي تتطابق معها.

للبحث في المجموعة، استخدم where() الطريقة.

حالة

البحث عن الفهرس للقيمة 4:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 4, 4])
x = np.where(arr == 4)
print(x)

حالة التشغيل

في المثال السابق سيتم إرجاع زوج:(array([3, 5, 6],)

ما يعنيه هو أن القيمة 4 تظهر في الفهارس 3،5 و6.

حالة

البحث عن الفهرس للقيم المتساوية

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
x = np.where(arr%2 == 0)
print(x)

حالة التشغيل

حالة

البحث عن الفهرس للقيم الغير متساوية

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
x = np.where(arr%2 == 1)
print(x)

حالة التشغيل

البحث الدوري

هناك اسم searchsorted() الطريقة، التي تنفذ البحث الثنائي في المجموعة وتعيد فهرس التثبيت الذي سيتم فيه إدراج القيمة المحددة للحفاظ على ترتيب البحث.

يتوقع searchsorted() يستخدم هذا الأسلوب لترتيب المجموعات.

حالة

البحث عن الموقع الذي يجب إدراجه فيه القيمة 7:

import numpy as np
arr = np.array([6, 7, 8, 9])
x = np.searchsorted(arr, 7)
print(x)

حالة التشغيل

شرح المثال:يجب إدراج الرقم 7 في الموقع 1 للحفاظ على الترتيب.

يبدأ هذا الأسلوب بالبحث من الجانب الأيسر، ويعود إلى أول المؤشر الذي يوقف فيه الرقم 7 عن أن يكون أكبر من القيمة التالية.

البحث من الجانب الأيمن

بالت defaultManager، يتم إرجاع أحدث المؤشر، ولكن يمكننا تحديده side='right'للإرجاع أحدث المؤشر.

حالة

البحث عن الموقع الذي يجب إدراج القيمة 7 فيه من الجانب الأيمن:

import numpy as np
arr = np.array([6, 7, 8, 9])
x = np.searchsorted(arr, 7, side='right')
print(x)

حالة التشغيل

شرح المثال:يجب إدراج الرقم 7 في الموقع 2 للحفاظ على الترتيب.

يبدأ هذا الأسلوب بالبحث من الجانب الأيمن، ويعود إلى أول المؤشر الذي يوقف فيه الرقم 7 عن أن يكون أقل من القيمة التالية.

قيم متعددة

للبحث عن قيم متعددة، استخدم مجموعة تحتوي على القيم المحددة.

حالة

البحث عن المكان الذي يجب إدراج القيم 2،4 و6 فيه:

import numpy as np
arr = np.array([1, 3, 5, 7])
x = np.searchsorted(arr, [2, 4, 6])
print(x)

حالة التشغيل

القيمة المعدة هي مجموعة:[1 2 3] تتضمن ثلاثة مؤشرات، حيث سيتم إدراج 2،4،6 في القائمة الأصلية للحفاظ على الترتيب.