Bird
Raised Fist0
NumPydata~5 mins

Integer types (int8, int16, int32, int64) in NumPy

Choose your learning style10 modes available
Introduction

Integer types let us store whole numbers in different sizes. This helps save memory and match the data we have.

When you want to save memory by using smaller number sizes for whole numbers.
When reading data from files that specify integer sizes, like int16 or int32.
When you need to control the range of numbers to avoid errors or overflow.
When working with hardware or systems that require specific integer sizes.
When you want to optimize performance by choosing the right integer type.
Syntax
NumPy
numpy.int8
numpy.int16
numpy.int32
numpy.int64

These are data types in numpy for integers of different sizes.

int8 uses 8 bits, int16 uses 16 bits, int32 uses 32 bits, and int64 uses 64 bits.

Examples
This creates a numpy array of 8-bit integers.
NumPy
import numpy as np
x = np.array([10, 20, 30], dtype=np.int8)
This creates a numpy array of 16-bit integers.
NumPy
y = np.array([1000, 2000, 3000], dtype=np.int16)
This creates a numpy array of 32-bit integers.
NumPy
z = np.array([100000, 200000, 300000], dtype=np.int32)
This creates a numpy array of 64-bit integers for very large numbers.
NumPy
w = np.array([10000000000, 20000000000, 30000000000], dtype=np.int64)
Sample Program

This program creates numpy arrays with different integer types and prints their values and types. It shows how each integer type can hold different ranges of numbers.

NumPy
import numpy as np

# Create arrays with different integer types
arr_int8 = np.array([127, -128, 0], dtype=np.int8)
arr_int16 = np.array([32767, -32768, 0], dtype=np.int16)
arr_int32 = np.array([2147483647, -2147483648, 0], dtype=np.int32)
arr_int64 = np.array([9223372036854775807, -9223372036854775808, 0], dtype=np.int64)

print('int8 array:', arr_int8)
print('int16 array:', arr_int16)
print('int32 array:', arr_int32)
print('int64 array:', arr_int64)

# Show the data types
print('Data type of arr_int8:', arr_int8.dtype)
print('Data type of arr_int16:', arr_int16.dtype)
print('Data type of arr_int32:', arr_int32.dtype)
print('Data type of arr_int64:', arr_int64.dtype)
OutputSuccess
Important Notes

int8 can store numbers from -128 to 127.

int16 can store numbers from -32768 to 32767.

Using the wrong integer size can cause overflow or data loss.

Summary

Integer types in numpy let you choose how much memory to use for whole numbers.

Different sizes (int8, int16, int32, int64) store different ranges of numbers.

Choosing the right integer type helps save memory and avoid errors.

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