0
0
SciPydata~20 mins

Convex hull computation in SciPy - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Convex Hull Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of Convex Hull vertices indices
What is the output of this code snippet that computes the convex hull of a set of 2D points using scipy?
SciPy
import numpy as np
from scipy.spatial import ConvexHull
points = np.array([[0, 0], [1, 1], [1, 0], [0, 1], [0.5, 0.5]])
hull = ConvexHull(points)
print(list(hull.vertices))
A[0, 2, 1, 3]
B[0, 1, 2, 3, 4]
C[4, 2, 1]
D[1, 2, 3]
Attempts:
2 left
💡 Hint
The convex hull vertices are the outermost points forming the polygon around all points.
data_output
intermediate
2:00remaining
Number of simplices in 3D convex hull
Given a set of 3D points, how many simplices (triangular faces) does the convex hull have?
SciPy
import numpy as np
from scipy.spatial import ConvexHull
points = np.random.rand(10, 3)
hull = ConvexHull(points)
print(len(hull.simplices))
A8
B10
C20
D16
Attempts:
2 left
💡 Hint
The number of simplices depends on the shape formed by the points, but for 10 random points in 3D, it is usually around 16.
🔧 Debug
advanced
2:00remaining
Identify the error in convex hull computation
What error does this code raise when trying to compute the convex hull of a single point?
SciPy
import numpy as np
from scipy.spatial import ConvexHull
points = np.array([[0, 0]])
hull = ConvexHull(points)
AIndexError: list index out of range
BQhullError: input must contain at least 3 points
CTypeError: unsupported operand type(s)
DNo error, returns empty hull
Attempts:
2 left
💡 Hint
Convex hull requires at least 3 points in 2D to form a polygon.
visualization
advanced
2:00remaining
Visualizing convex hull edges in 2D
Which option correctly plots the convex hull edges for a set of 2D points using matplotlib and scipy?
SciPy
import numpy as np
import matplotlib.pyplot as plt
from scipy.spatial import ConvexHull
points = np.random.rand(15, 2)
hull = ConvexHull(points)
plt.plot(points[:,0], points[:,1], 'o')
for simplex in hull.simplices:
    plt.plot(points[simplex, 0], points[simplex, 1], 'r-')
plt.show()
APlots points and blue lines connecting all points, not just hull edges.
BPlots points but no lines connecting hull edges.
CPlots points and red lines connecting hull edges correctly.
DRaises an error due to incorrect indexing.
Attempts:
2 left
💡 Hint
The hull.simplices attribute contains pairs of indices for edges of the hull.
🚀 Application
expert
3:00remaining
Using convex hull to filter outliers in 2D data
You have 2D data points with some outliers far from the main cluster. Which approach uses the convex hull to identify and remove outliers?
ACompute the convex hull of the main cluster only, then remove points outside this hull.
BCompute the convex hull of all points, then remove points inside the hull polygon.
CCompute the convex hull of all points, then remove points that are vertices of the hull.
DCompute the convex hull of all points, then remove points outside the hull's polygon.
Attempts:
2 left
💡 Hint
Outliers lie outside the main cluster's convex hull.