w3resource

NumPy: Convert a given array into bytes, and load it as array


Convert Array to Bytes and Back

Write a NumPy program to convert a given array into bytes, and load it as an array.

This problem involves writing a NumPy program to convert a given array into a bytes object and then load it back as an array. The task requires using NumPy's "tobytes()" method to serialize the array into a bytes object and the "frombuffer()" method to deserialize the bytes back into an array. This process demonstrates how to efficiently convert array data to a byte representation for storage or transmission and then restore it to its original form.

Sample Solution :

Python Code :

# Importing the NumPy library with an alias 'np'
import numpy as np

# Importing the 'os' module for operating system-dependent functionality
import os

# Creating a NumPy array 'a' containing integers from 1 to 6
a = np.array([1, 2, 3, 4, 5, 6])

# Printing a message indicating the original array 'a'
print("Original array:")
print(a)

# Converting the array 'a' to bytes using a.tobytes() method and storing it in 'a_bytes'
a_bytes = a.tobytes()

# Creating a new NumPy array 'a2' by reading from 'a_bytes' using np.frombuffer()
# Specifying the datatype of 'a2' as the same as 'a' using a.dtype
a2 = np.frombuffer(a_bytes, dtype=a.dtype)

# Printing a message indicating the content of the array after loading from bytes
print("After loading, content of the text file:")
print(a2)

# Checking if both arrays 'a' and 'a2' are equal using np.array_equal()
print(np.array_equal(a, a2)) 

Output:

Original array:
[1 2 3 4 5 6]
After loading, content of the text file:
[1 2 3 4 5 6]
True                   

Explanation:

In the above code -

np.array([1, 2, 3, 4, 5, 6]) creates a 1D array and stores in the variable 'a' with elements 1 to 6.

a_bytes = a.tobytes(): This statement converts the NumPy array 'a' into a bytes object named 'a_bytes'.

a2 = np.frombuffer(a_bytes, dtype=a.dtype): This statement reconstructs a NumPy array 'a2' from the bytes object 'a_bytes' using the 'frombuffer' function. The 'dtype' argument is set to the same data type as the original array 'a' to ensure that the elements are interpreted correctly.

print(np.array_equal(a, a2)): This statement uses the 'np.array_equal()' function to check if the original array 'a' and the reconstructed array 'a2' are element-wise equal. If they are equal, it prints 'True'; otherwise, it prints 'False'.

Python-Numpy Code Editor: