اذهب إلى المحتوى

السؤال

نشر

لدي مصفوفة بالشكل التالي:

x = np.array([[0,  1],	# 0
              [2,  3],	# 1
              [4,  5],	# 2
              [6,  7],	# 3
              [8,  9]])	# 4

وأريد أن أقوم بإيجاد الفهرس الخاص بكل صف في المصفوفة التالي:

search_array = np.array([[0,  1],
    [4,  5],
    [8,  9]
])

من المفترض أن تكون النتيجة كالتالي:

[0, 2, 4]

كيف أقوم بعمل هذا الأمر باستخدام مكتبة numpy؟

Recommended Posts

  • 1
نشر

يمكن استخدام أيٍ من الطرق التالية:

 

x = np.array([[0,  1],	# 0
              [2,  3],	# 1
              [4,  5],	# 2
              [6,  7],	# 3
              [8,  9]])	# 4


search_array = np.array([[0,  1],
    [4,  5],
    [8,  9]
])

# الطريقة الأولى

#  فيما عدا ذلك false  في حالة التساوي و  true  في هذه الطريقة سنقوم بالمقارنة بين المصفوفتين و سيتم إرجاع 

>>> x == search_array
array([[ True, True],
       [ False,  False],
       [ True,  True],
       [ False,  False],
       [ True,  True],
      ], dtype=bool)


# الطريقة الثانية 
>>> np.all(x == search_array,axis=1)
array([True,  False, True, False , True], dtype=bool)

# الطريقة الثالثة 
#  where في حال تساوي الأصفف و بعدها التابع  true و الذي سيقوم بإرجاع  all باستخدام التابع 
# true و الدي سيقوم بإرجاع الفهرس الخاص بالعناصر التي لها القيمة 

>>> np.where(np.all(x == search_array,axis=1))
(array([0, 2, 4]),)

 

  • 0
نشر

يمكنك إيجاد عنصر في قائمة بإستخدام الدالة index للقوائم وذلك بتحويل المصفوفات كما موضح في البرنامج التالي:

def find(myarray, elements):
  myarray = myarray.tolist()
  elements = elements.tolist()
  indices = []
  for element in elements:
    indices.append(myarray.index(element))
  return indices

والان لتنفيذ المثال يمكننا مناداة الدالة المعرفة:

import numpy as np

x = np.array([[0,  1],	# 0
              [2,  3],	# 1
              [4,  5],	# 2
              [6,  7],	# 3
              [8,  9]])	# 4

xx = np.array([[0,  1],
    [4,  5],
    [8,  9]])    
       
find(x,xx)

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...