In this tutorial, we will look at how to calculate the Manhattan distance between two points in Python with the help of some exmaples.
What is Manhattan Distance?
Manhattan distance (also called taxicab distance) is the sum of absolute differences between the coordinates of two points. The following image illustrates the computation of Manhattan distance between points A and B.
You can see that we’re calculating the distance between the two points by moving from point A (1, 1) to B (4, 3) (or vice versa) along the axes at right angles.
Formula of Manhattan Distance
To calculate the Manhattan distance between the points (x1, y1) and (x2, y2) you can use the formula:
For example, the distance between points (1, 1) and (4, 3) is 5. The above formula can be generalized to n-dimensions:
Manhattan Distance Computation in Python
There are a number of ways to compute the Manhattan distance in Python. For example, you can write your own custom function or use off the shelf methods from libraries like scipy. Let’s look at them with the help of examples.
1. Custom Function in Python
Before we proceed to the off the shelf methods, let’s write a function to get the Manhattan distance between two points with any number of dimensions (assuming both the points have the same number of dimensions).
def get_manhattan_distance(p, q): """ Return the manhattan distance between points p and q assuming both to have the same number of dimensions """ # sum of absolute difference between coordinates distance = 0 for p_i,q_i in zip(p,q): distance += abs(p_i - q_i) return distance # check the function a = (1, 1) b = (4, 3) # distance b/w a and b d = get_manhattan_distance(a, b) # display the result print(d)
Output:
Introductory ⭐
- Harvard University Data Science: Learn R Basics for Data Science
- Standford University Data Science: Introduction to Machine Learning
- UC Davis Data Science: Learn SQL Basics for Data Science
- IBM Data Science: Professional Certificate in Data Science
- IBM Data Analysis: Professional Certificate in Data Analytics
- Google Data Analysis: Professional Certificate in Data Analytics
- IBM Data Science: Professional Certificate in Python Data Science
- IBM Data Engineering Fundamentals: Python Basics for Data Science
Intermediate ⭐⭐⭐
- Harvard University Learning Python for Data Science: Introduction to Data Science with Python
- Harvard University Computer Science Courses: Using Python for Research
- IBM Python Data Science: Visualizing Data with Python
- DeepLearning.AI Data Science and Machine Learning: Deep Learning Specialization
Advanced ⭐⭐⭐⭐⭐
- UC San Diego Data Science: Python for Data Science
- UC San Diego Data Science: Probability and Statistics in Data Science using Python
- Google Data Analysis: Professional Certificate in Advanced Data Analytics
- MIT Statistics and Data Science: Machine Learning with Python - from Linear Models to Deep Learning
- MIT Statistics and Data Science: MicroMasters® Program in Statistics and Data Science
🔎 Find Data Science Programs 👨💻 111,889 already enrolled
Disclaimer: Data Science Parichay is reader supported. When you purchase a course through a link on this site, we may earn a small commission at no additional cost to you. Earned commissions help support this website and its team of writers.
5
You can see that we get the correct result for the points (1,1) and (4,3). The above function also works for points with more than 2 dimensions. For example, let’s get the distance between points (1, 0, 2, 3) and (4, 4, 3, 1).
# check the function a = (1, 0, 2, 3) b = (4, 4, 3, 1) # distance b/w a and b d = get_manhattan_distance(a, b) # display the result print(d)
Output:
10
We get 10 as the output. If we use the formula above, we get the same results.
Note that the above implementation can further be improved by using vectorized operations with the help of numpy arrays to calculate the difference efficiently.
2. Manhattan distance using the Scipy Library
The scipy
library contains a number of useful functions of scientific computation in Python. Use the distance.cityblock()
function available in scipy.spatial
to calculate the Manhattan distance between two points in Python.
from scipy.spatial import distance # two points a = (1, 0, 2, 3) b = (4, 4, 3, 1) # mahattan distance b/w a and b d = distance.cityblock(a, b) # display the result print(d)
Output:
10
We get the same results as above. For more on this function, refer to its documentation.
Difference between Manhattan Distance and Euclidean Distance
When referring to the distance between points we generally are referring to the Euclidean distance between them which is calculated by taking the square root of the sum of squares of differences between the coordinates. On the other hand, in Manhattan distance, we only take the sum of absolute differences between the coordinates of the two points.
With this, we come to the end of this tutorial. The code examples and results presented in this tutorial have been implemented in a Jupyter Notebook with a python (version 3.8.3) kernel having pandas version 1.0.5
Subscribe to our newsletter for more informative guides and tutorials.
We do not spam and you can opt out any time.