كيفية حساب مسافة مانهاتن في بايثون (مع أمثلة)
يتم حساب مسافة مانهاتن بين المتجهين A و B على النحو التالي:
Σ|أ ط – ب ط |
حيث i هو العنصر الأول لكل متجه.
تُستخدم هذه المسافة لقياس الاختلاف بين ناقلين وتستخدم بشكل شائع في العديد من خوارزميات التعلم الآلي .
يوضح هذا البرنامج التعليمي طريقتين لحساب مسافة مانهاتن بين متجهين في بايثون.
الطريقة الأولى: كتابة دالة مخصصة
يوضح الكود التالي كيفية إنشاء دالة مخصصة لحساب مسافة مانهاتن بين متجهين في بايثون:
from math import sqrt #create function to calculate Manhattan distance def manhattan(a, b): return sum ( abs (val1-val2) for val1, val2 in zip (a,b)) #definevectors A = [2, 4, 4, 6] B = [5, 5, 7, 8] #calculate Manhattan distance between vectors manhattan(A,B) 9
وتبين أن مسافة مانهاتن بين هذين المتجهين هي 9 .
يمكننا التأكد من صحة هذا من خلال حساب المسافة إلى مانهاتن يدويًا بسرعة:
Σ|أ ط – ب ط | = |2-5| + |4-5| + |4-7| + |6-8| = 3 + 1 + 3 + 2 = 9 .
الطريقة الثانية: استخدم وظيفة cityblock()
هناك طريقة أخرى لحساب مسافة مانهاتن بين متجهين وهي استخدام دالة cityblock() من حزمة SciPy:
from scipy. spatial . distance import cityblock #definevectors A = [2, 4, 4, 6] B = [5, 5, 7, 8] #calculate Manhattan distance between vectors cityblock(A, B) 9
مرة أخرى، تبين أن مسافة مانهاتن بين هذين المتجهين هي 9 .
لاحظ أنه يمكننا أيضًا استخدام هذه الوظيفة للعثور على مسافة مانهاتن بين عمودين في إطار بيانات الباندا:
from scipy. spatial . distance import cityblock import pandas as pd #define DataFrame df = pd. DataFrame ({' A ': [2, 4, 4, 6], ' B ': [5, 5, 7, 8], ' C ': [9, 12, 12, 13]}) #calculate Manhattan distance between columns A and B cityblock(df. A , df. B ) 9
مصادر إضافية
كيفية حساب المسافة الإقليدية في بايثون
كيفية حساب مسافة هامينغ في بايثون
كيفية حساب مسافة Levenshtein في بايثون
كيفية حساب المسافة Mahalanobis في بايثون