NumPy - Array Itemsize

NumPy Array Itemsize

The itemsize attribute in a NumPy array indicates the size, in bytes, of each element in the array. This size is determined by the data type of the array elements (e.g., integer, float).

By knowing the itemsize, you can estimate the total memory consumption of the array. This is important for understanding the memory layout and storage requirements of arrays, especially when dealing with large datasets.

Accessing Array Itemsize

You can access the itemsize of a NumPy array using the itemsize attribute. This attribute returns an integer representing the size (in bytes) of each element in the array.

Example

In the following example, we are accessing the itemsize of an integer array and a float array −

import numpy as np

# Creating arrays with different data types
array_int32 = np.array([1, 2, 3], dtype=np.int32)
array_float64 = np.array([1.0, 2.0, 3.0], dtype=np.float64)

# Checking itemsize
print("Itemsize of int32 array:", array_int32.itemsize)
print("Itemsize of float64 array:", array_float64.itemsize)

Following is the output obtained −

Itemsize of int32 array: 4
Itemsize of float64 array: 8

Calculating Itemsize Memory Usage

To calculate the total memory occupied by the array, you can multiply the “itemsize” by the total number of elements in the array.

For example, if an array has “1000” elements and an itemsize of “8” bytes, the total memory used by the array would be “1000 * 8” = “8000” bytes.

Example

In this example, we are calculating the total memory usage of a 2D array −

import numpy as np

# Create a 2D array
array_2d = np.array([[1, 2], [3, 4]], dtype=np.float32)

# Calculate total memory usage
total_memory_usage = array_2d.size * array_2d.itemsize
print(f"Total memory usage: {total_memory_usage} bytes")

This will produce the following result −

Total memory usage: 16 bytes

Itemsize with Different Data Types

In NumPy, different data types have different itemsize values. For example −

  • np.int8 has an itemsize of 1 byte.
  • np.int16 has an itemsize of 2 bytes.
  • np.float64 has an itemsize of 8 bytes.
  • np.complex128 has an itemsize of 16 bytes.

Example

In the example below, we are creating arrays with different data types and then checking itemsize of each array −

import numpy as np

# Creating arrays with different data types
array_int8 = np.array([1, 2, 3], dtype=np.int8)
array_int16 = np.array([1, 2, 3], dtype=np.int16)
array_uint32 = np.array([1, 2, 3], dtype=np.uint32)
array_float16 = np.array([1.0, 2.0, 3.0], dtype=np.float16)
array_complex128 = np.array([1+2j, 3+4j, 5+6j], dtype=np.complex128)

# Checking itemsize
print("Itemsize of int8 array:", array_int8.itemsize)
print("Itemsize of int16 array:", array_int16.itemsize)
print("Itemsize of uint32 array:", array_uint32.itemsize)
print("Itemsize of float16 array:", array_float16.itemsize)
print("Itemsize of complex128 array:", array_complex128.itemsize)

The output obtained is as shown below −

Itemsize of int8 array: 1
Itemsize of int16 array: 2
Itemsize of uint32 array: 4
Itemsize of float16 array: 2
Itemsize of complex128 array: 16

Changing Itemsize by Modifying Data Types

By modifying the data type of the array, you can change its itemsize, which affects how much memory each element occupies and, consequently, the total memory usage of the array.

You can change the data type of a NumPy array using the astype() function. This function accepts the target data type to which you want to convert the array.

Example

In the following example, we are changing the data type of an array from “int32” to “int8” and checking the itemsize of that array −

import numpy as np

# Original array with int32
array_original = np.array([1, 2, 3], dtype=np.int32)
print(f"Original itemsize: {array_original.itemsize} bytes")

# Change data type to int8
array_new = array_original.astype(np.int8)
print(f"New itemsize: {array_new.itemsize} bytes")

After executing the above code, we get the following output −

Original itemsize: 4 bytes
New itemsize: 1 bytes
© 2024 All rights reserved. | Made With 🤍 By The_MAK Team