Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Calculate Vector Norms Using np.linalg.norm()
📖 Scenario: Imagine you are working with a delivery company that tracks the movement of packages in 3D space. You want to calculate how far each package has moved from the origin point (0,0,0) using vector norms.
🎯 Goal: You will create a list of 3D vectors representing package movements, set a norm order, calculate the norms of each vector using np.linalg.norm(), and print the results.
📋 What You'll Learn
Create a list of 3D vectors using numpy arrays with exact values
Set a variable for the norm order (e.g., 2 for Euclidean norm)
Use a for loop to calculate the norm of each vector using np.linalg.norm() with the given order
Print the list of calculated norms
💡 Why This Matters
🌍 Real World
Calculating vector norms is useful in physics to find distances or magnitudes, in machine learning to measure errors or distances between points, and in computer graphics to calculate lengths and directions.
💼 Career
Data scientists and engineers often use vector norms to preprocess data, evaluate models, and analyze spatial data.
Progress0 / 4 steps
1
Create a list of 3D vectors
Create a list called vectors containing these three numpy arrays exactly: np.array([3, 4, 0]), np.array([1, 2, 2]), and np.array([0, 0, 5]).
NumPy
Hint
Use np.array() to create each vector and put them inside a list called vectors.
2
Set the norm order
Create a variable called norm_order and set it to 2 to calculate the Euclidean norm.
NumPy
Hint
Set norm_order to 2 for the Euclidean norm.
3
Calculate norms of each vector
Create an empty list called norms. Use a for loop with variable vec to iterate over vectors. Inside the loop, calculate the norm of vec using np.linalg.norm(vec, ord=norm_order) and append the result to norms.
NumPy
Hint
Use a for loop to go through each vector and calculate its norm with np.linalg.norm(). Append each norm to the norms list.
4
Print the list of norms
Write a print statement to display the norms list.
NumPy
Hint
Use print(norms) to show the list of calculated norms.
Practice
(1/5)
1. What does np.linalg.norm() calculate by default when given a vector?
easy
A. The maximum element in the vector
B. The sum of all vector elements
C. The Euclidean length (distance) of the vector
D. The product of all vector elements
Solution
Step 1: Understand the default behavior of np.linalg.norm()
By default, np.linalg.norm() calculates the Euclidean norm, which is the straight-line distance from the origin to the point represented by the vector.
Step 2: Compare with other options
The sum, max, and product are different operations and not what np.linalg.norm() returns by default.
Final Answer:
The Euclidean length (distance) of the vector -> Option C
Quick Check:
Default norm = Euclidean length [OK]
Hint: Default norm is Euclidean distance, not sum or max [OK]
Common Mistakes:
Confusing norm with sum of elements
Thinking norm returns max element
Assuming norm multiplies elements
2. Which of the following is the correct syntax to compute the 1-norm (sum of absolute values) of a vector v using np.linalg.norm()?
easy
A. np.linalg.norm(v, order=1)
B. np.linalg.norm(v, ord=1)
C. np.linalg.norm(v, norm=1)
D. np.linalg.norm(v, p=1)
Solution
Step 1: Recall the parameter name for norm order
The parameter to specify the norm order in np.linalg.norm() is ord, not order, norm, or p.
Step 2: Check the correct syntax
Using ord=1 correctly computes the 1-norm, which sums the absolute values of vector elements.
Final Answer:
np.linalg.norm(v, ord=1) -> Option B
Quick Check:
Use ord=1 for 1-norm [OK]
Hint: Use ord=1 to specify 1-norm in np.linalg.norm() [OK]
Common Mistakes:
Using 'order' instead of 'ord'
Using 'norm' or 'p' as parameter names
Omitting the ord parameter for 1-norm
3. What is the output of the following code?
import numpy as np
v = np.array([3, 4])
norm_val = np.linalg.norm(v)
print(norm_val)
medium
A. 5.0
B. 7
C. 12
D. 1
Solution
Step 1: Calculate the Euclidean norm of vector [3, 4]
The Euclidean norm is sqrt(3^2 + 4^2) = sqrt(9 + 16) = sqrt(25) = 5.0.
Step 2: Confirm the printed output
The code prints the norm value, which is 5.0.
Final Answer:
5.0 -> Option A
Quick Check:
Euclidean norm of [3,4] = 5.0 [OK]
Hint: Euclidean norm of (3,4) is 5 by Pythagoras [OK]
Common Mistakes:
Adding elements instead of squaring and summing
Forgetting to take square root
Confusing norm with sum or max
4. The following code throws an error. What is the mistake?
import numpy as np
v = np.array([1, -2, 3])
norm_val = np.linalg.norm(v, order=2)
print(norm_val)
medium
A. The parameter name should be 'ord' not 'order'
B. The vector contains negative values which cause error
C. np.linalg.norm() does not accept a second argument
D. The vector must be a list, not a numpy array
Solution
Step 1: Identify the parameter name error
The parameter to specify norm order is ord, not order. Using order causes a TypeError.
Step 2: Confirm other options are incorrect
Negative values are allowed, np.linalg.norm accepts second argument ord, and numpy arrays are valid inputs.
Final Answer:
The parameter name should be 'ord' not 'order' -> Option A
Quick Check:
Use ord=2, not order=2 [OK]
Hint: Use ord= for norm order, not order= [OK]
Common Mistakes:
Using 'order' instead of 'ord'
Thinking negative values cause error
Believing np.linalg.norm takes only one argument
5. You have a dataset of 2D points stored as rows in a numpy array points. You want to normalize each point to have length 1 (unit vector). Which code correctly does this using np.linalg.norm()?
hard
A. normalized = points / np.linalg.norm(points, ord=1, axis=1)
B. normalized = points / np.linalg.norm(points, axis=0)
C. normalized = points / np.linalg.norm(points)
D. normalized = points / np.linalg.norm(points, axis=1, keepdims=True)
Solution
Step 1: Calculate norms along rows with correct shape
Using np.linalg.norm(points, axis=1, keepdims=True) computes the Euclidean norm for each row and keeps the result as a column vector, allowing correct broadcasting for division.
Step 2: Normalize each point by dividing by its norm
Dividing points by the norms with matching shape normalizes each row vector to length 1.
Final Answer:
normalized = points / np.linalg.norm(points, axis=1, keepdims=True) -> Option D
Quick Check:
Use keepdims=True for correct broadcasting [OK]
Hint: Use keepdims=True to keep norm shape for division [OK]
Common Mistakes:
Using axis=0 instead of axis=1 for row-wise normalization