Bird
Raised Fist0
NumPydata~10 mins

Integer types (int8, int16, int32, int64) in NumPy - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Integer types (int8, int16, int32, int64)
Choose integer type
↓
Create numpy array with type
↓
Store values in array
↓
Check memory size and range
↓
Use array in calculations
↓
Observe overflow or correct results
↓
END
This flow shows how you pick an integer type, create a numpy array with it, store values, and see how size and range affect calculations.
Execution Sample
NumPy
import numpy as np
arr = np.array([120, 130], dtype=np.int8)
print(arr)
print(arr.dtype)
print(arr.nbytes)
Create a numpy array with int8 type, print values, type, and memory size.
Execution Table
StepActionValue/ResultExplanation
1Create array with values [120, 130] and dtype int8[120, -126]130 overflows int8 max (127), wraps to -126
2Print array dtypeint8Array stores values as 8-bit signed integers
3Print array memory size2Each int8 uses 1 byte, total 2 bytes for 2 elements
4END-Execution ends after printing values and info
💡 All steps completed; overflow shown in step 1 due to int8 range limits
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3Final
arrundefined[120, -126] (int8 array)[120, -126] (int8 array)[120, -126] (int8 array)[120, -126] (int8 array)
arr.dtypeundefinedint8int8int8int8
arr.nbytesundefined2222
Key Moments - 2 Insights
Why does the value 130 become -126 in the int8 array?
int8 can only store values from -128 to 127. When 130 is stored, it overflows and wraps around, resulting in -126 as shown in execution_table step 1.
How do we know the memory size used by the array?
The arr.nbytes attribute shows total bytes used. Since int8 uses 1 byte per element and there are 2 elements, total is 2 bytes (execution_table step 3).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table step 1, what is the stored value for 130 in the int8 array?
A130
B-126
C127
D-130
💡 Hint
Check the 'Value/Result' column in step 1 of the execution_table.
At which step do we see the memory size of the array?
AStep 1
BStep 2
CStep 3
DStep 4
💡 Hint
Look for arr.nbytes output in the execution_table.
If we change dtype to int16, what will happen to the stored value of 130?
AIt will store 130 correctly
BIt will still overflow and wrap
CIt will become -130
DIt will cause an error
💡 Hint
int16 can store values from -32768 to 32767, so 130 fits without overflow.
Concept Snapshot
Integer types in numpy define how many bits store each number.
int8 uses 8 bits (-128 to 127), int16 uses 16 bits, etc.
Choosing smaller types saves memory but can cause overflow.
Overflow wraps values around within the type's range.
Use dtype parameter to set integer type when creating arrays.
Full Transcript
This lesson shows how numpy integer types like int8 store numbers with limited range. We create an array with int8 type and values 120 and 130. Since int8 can only hold -128 to 127, 130 overflows and wraps to -126. We print the array, its type, and memory size. The memory size is 2 bytes because each int8 uses 1 byte. Key points: integer types limit value range, overflow wraps values, and smaller types use less memory. Changing to int16 would store 130 correctly without overflow.

Practice

(1/5)
1. Which numpy integer type uses the least amount of memory?
easy
A. int64
B. int16
C. int8
D. int32

Solution

  1. Step 1: Understand integer type sizes

    Each numpy integer type uses a different number of bits: int8 uses 8 bits, int16 uses 16 bits, int32 uses 32 bits, and int64 uses 64 bits.
  2. Step 2: Identify the smallest size

    Since 8 bits is the smallest size, int8 uses the least memory.
  3. Final Answer:

    int8 -> Option C
  4. Quick Check:

    Smallest bits = int8 [OK]
Hint: Smaller int types use fewer bits and less memory [OK]
Common Mistakes:
  • Confusing int8 with int16 or larger types
  • Thinking int64 uses less memory
  • Assuming int32 is smallest
2. Which of the following is the correct way to create a numpy array of type int16?
easy
A. np.array([1, 2, 3], dtype='int16')
B. np.array([1, 2, 3], type='int16')
C. np.array([1, 2, 3], dtype=int8)
D. np.array([1, 2, 3], type=int16)

Solution

  1. Step 1: Recall numpy array creation syntax

    To specify the data type, use the parameter dtype with a string or numpy type.
  2. Step 2: Check each option

    np.array([1, 2, 3], dtype='int16') uses dtype='int16', which is correct. Options B and D use type which is invalid. np.array([1, 2, 3], dtype=int8) uses dtype=int8, which is valid syntax but wrong type.
  3. Final Answer:

    np.array([1, 2, 3], dtype='int16') -> Option A
  4. Quick Check:

    Use dtype='int16' to set type [OK]
Hint: Use dtype='intXX' to set integer type in numpy array [OK]
Common Mistakes:
  • Using 'type' instead of 'dtype'
  • Passing dtype without quotes for string type
  • Confusing int8 and int16 types
3. What will be the output of this code?
import numpy as np
arr = np.array([127, 128], dtype='int8')
print(arr)
medium
A. [127 128]
B. [127 -128]
C. [127 0]
D. Error: value out of range

Solution

  1. Step 1: Understand int8 range

    int8 can store values from -128 to 127. The value 128 is outside this range.
  2. Step 2: Observe overflow behavior

    When 128 is stored in int8, it wraps around to -128 due to overflow.
  3. Final Answer:

    [127 -128] -> Option B
  4. Quick Check:

    int8 overflow wraps 128 to -128 [OK]
Hint: int8 max is 127; values above wrap to negative [OK]
Common Mistakes:
  • Expecting 128 to store correctly in int8
  • Assuming error raised on overflow
  • Thinking 128 becomes 0
4. Identify the error in this code snippet:
import numpy as np
arr = np.array([1000, 2000], dtype='int8')
print(arr)
medium
A. No error, prints [1000 2000]
B. SyntaxError due to dtype
C. ValueError: integer out of range
D. Values overflow and wrap around silently

Solution

  1. Step 1: Check dtype and values

    The array uses int8 which can only hold -128 to 127, but values 1000 and 2000 are much larger.
  2. Step 2: Understand numpy overflow behavior

    Instead of error, numpy silently wraps values using modulo 256, causing overflow.
  3. Final Answer:

    Values overflow and wrap around silently -> Option D
  4. Quick Check:

    int8 overflow wraps large values silently [OK]
Hint: Large values in small int types wrap silently, no error [OK]
Common Mistakes:
  • Expecting ValueError on overflow
  • Thinking values print as is
  • Confusing syntax error with dtype
5. You have a large dataset of whole numbers ranging from -30000 to 30000. Which numpy integer type should you choose to store this data efficiently without overflow?
hard
A. int16
B. int32
C. int8
D. int64

Solution

  1. Step 1: Identify the value range needed

    The data ranges from -30000 to 30000, so the integer type must cover at least this range.
  2. Step 2: Check integer type ranges

    int8 covers -128 to 127 (too small), int16 covers -32768 to 32767 (fits range), int32 and int64 cover larger ranges but use more memory.
  3. Step 3: Choose the smallest type that fits

    int16 fits the range and uses less memory than int32 or int64.
  4. Final Answer:

    int16 -> Option A
  5. Quick Check:

    int16 range covers ±30000 efficiently [OK]
Hint: Pick smallest int type covering data range to save memory [OK]
Common Mistakes:
  • Choosing int8 which is too small
  • Picking int64 unnecessarily
  • Ignoring negative range limits
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard