What is the purpose of monitoring memory usage in a program?
Monitoring memory usage helps to understand how much memory a program consumes, which can prevent crashes and improve performance by avoiding memory leaks or excessive consumption.
Click to reveal answer
beginner
Which Python module can be used to check the memory size of a numpy array?
The nbytes attribute of a numpy array shows the total bytes consumed by the array's elements.
Click to reveal answer
beginner
How do you get the memory size of a numpy array named arr?
Use arr.nbytes to get the total memory in bytes used by the array data.
Click to reveal answer
intermediate
What does the sys.getsizeof() function do in Python?
It returns the size in bytes of a Python object, including overhead, but for numpy arrays it does not include the data buffer size, so nbytes is preferred for arrays.
Click to reveal answer
intermediate
Why is it important to monitor memory usage when working with large numpy arrays?
Large numpy arrays can consume a lot of memory, which may slow down the system or cause crashes. Monitoring helps optimize memory use and avoid running out of memory.
Click to reveal answer
Which numpy attribute gives the total bytes used by the array data?
Anbytes
Bsize
Cshape
Ddtype
✗ Incorrect
The nbytes attribute returns the total number of bytes consumed by the elements of the array.
What does sys.getsizeof() NOT include for numpy arrays?
AThe size of small integers
BThe object overhead
CThe size of Python objects
DThe data buffer size
✗ Incorrect
sys.getsizeof() does not include the memory used by the actual data buffer of numpy arrays.
Why monitor memory usage in numpy programs?
ATo increase CPU speed
BTo avoid memory leaks and crashes
CTo change array shapes automatically
DTo reduce disk space usage
✗ Incorrect
Monitoring memory helps prevent leaks and crashes by managing how much memory numpy arrays consume.
Which of these is NOT a reason to monitor memory usage?
AAutomatically fix bugs in code
BAvoid running out of memory
CPrevent system slowdowns
DOptimize resource use
✗ Incorrect
Monitoring memory usage helps manage resources but does not automatically fix bugs.
If you want to check how many bytes a numpy array uses, which is the best method?
AUse <code>sys.getsizeof(arr)</code>
BUse <code>len(arr)</code>
CUse <code>arr.nbytes</code>
DUse <code>arr.shape</code>
✗ Incorrect
arr.nbytes gives the exact number of bytes used by the array data.
Explain how to monitor memory usage of a numpy array and why it is important.
Think about how numpy stores data and what happens if memory is too large.
You got /4 concepts.
Describe the difference between sys.getsizeof() and nbytes when checking memory usage of numpy arrays.
Consider what each function measures in Python objects vs numpy arrays.
You got /4 concepts.
Practice
(1/5)
1. What does the nbytes attribute of a NumPy array represent?
easy
A. The size of each element in the array
B. The total memory in bytes used by the array data
C. The number of elements in the array
D. The number of dimensions of the array
Solution
Step 1: Understand what nbytes means
The nbytes attribute gives the total number of bytes consumed by the elements of the array.
Step 2: Differentiate from other attributes
Other attributes like size give element count, itemsize gives size per element, and ndim gives dimensions.
Final Answer:
The total memory in bytes used by the array data -> Option B
Quick Check:
nbytes = total bytes used [OK]
Hint: Remember: nbytes = total bytes used by array data [OK]
Common Mistakes:
Confusing nbytes with size (number of elements)
Thinking nbytes is size of one element
Mixing nbytes with number of dimensions
2. Which of the following is the correct way to get the memory usage of a NumPy array arr?
easy
A. arr.memsize
B. arr.memory()
C. arr.size()
D. arr.nbytes
Solution
Step 1: Recall the attribute for memory usage
The correct attribute to get total memory used by array data is nbytes, accessed without parentheses.
Step 2: Check other options for correctness
memory() and memsize do not exist; size() is a method but returns element count, not memory.
Final Answer:
arr.nbytes -> Option D
Quick Check:
Use nbytes attribute, no parentheses [OK]
Hint: Use arr.nbytes without parentheses to get memory [OK]
Common Mistakes:
Using parentheses with nbytes (it's an attribute, not a method)
Step 1: Calculate number of elements and size per element
The array has 4 elements, each of type int32 which uses 4 bytes.
Step 2: Multiply elements by bytes per element
Total bytes = 4 elements * 4 bytes = 16 bytes.
Final Answer:
16 -> Option C
Quick Check:
4 elements x 4 bytes = 16 bytes [OK]
Hint: Multiply element count by itemsize for nbytes [OK]
Common Mistakes:
Assuming int32 uses 8 bytes
Confusing nbytes with number of elements
Forgetting to multiply by element size
4. You run this code but get an error:
import numpy as np
arr = np.array([1, 2, 3])
print(arr.nbytes())
What is the cause of the error?
medium
A. nbytes is an attribute, not a method; remove parentheses
B. Array must be created with dtype specified
C. nbytes only works on 2D arrays
D. You must import nbytes separately
Solution
Step 1: Identify the error cause
The code calls arr.nbytes() with parentheses, but nbytes is an attribute, not a function.
Step 2: Correct usage
Access nbytes without parentheses: arr.nbytes.
Final Answer:
nbytes is an attribute, not a method; remove parentheses -> Option A
Quick Check:
Attributes have no parentheses [OK]
Hint: Remember: attributes like nbytes have no parentheses [OK]
Common Mistakes:
Adding parentheses to attributes
Thinking dtype is required for nbytes
Believing nbytes only works on certain array shapes
5. You have a large NumPy array big_arr with 1 million elements of type float64. You want to reduce memory usage without losing much precision. Which approach helps monitor and reduce memory usage effectively?
hard
A. Check big_arr.nbytes and convert to float32 if memory is high
B. Use big_arr.size to reduce elements by half
C. Delete big_arr and recreate with zeros
D. Convert big_arr to Python list to save memory
Solution
Step 1: Monitor memory usage with nbytes
Use big_arr.nbytes to see current memory consumption in bytes.
Step 2: Reduce memory by changing data type
Converting from float64 (8 bytes) to float32 (4 bytes) halves memory usage with minimal precision loss.
Final Answer:
Check big_arr.nbytes and convert to float32 if memory is high -> Option A
Quick Check:
Use nbytes + dtype change to reduce memory [OK]
Hint: Check nbytes then downcast dtype to save memory [OK]
Common Mistakes:
Using size instead of nbytes to measure memory
Converting to Python list increases memory
Deleting array without monitoring memory
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.