Prerequisites: numpy.savetxt(), numpy.loadtxt()
Numpy.savetxt() is a method in python in numpy library to save an 1D and 2D array to a file.
Syntax: numpy.savetxt(fname, X, fmt=’%.18e’, delimiter=’ ‘, newline=’\n’, header=”, footer=”, comments=’# ‘, encoding=None)
numpy.loadtxt() is a method in python in numpy library to load data from a text file for faster reading.
Syntax: numpy.loadtxt(fname, dtype=’float’, comments=’#’, delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0)
Saving and loading 3D arrays
As discussed earlier we can only use 1D or 2D array in numpy.savetxt(), and if we use an array of more dimensions it will throw a ValueError – Expected 1D or 2D array, got 3D array instead. Therefore, we need to find a way to save and retrieve, at least for 3D arrays, here’s how you can do this by using some Python tricks.
- Step 1: reshape the 3D array to 2D array.
- Step 2: Insert this array to the file
- Step 3: Load data from the file to display
- Step 4: convert back to the original shaped array
Example:
Python3
import numpy as gfg arr = gfg.random.rand(5, 4, 3) # reshaping the array from 3D# matrice to 2D matrice.arr_reshaped = arr.reshape(arr.shape[0], -1) # saving reshaped array to file.gfg.savetxt("geekfile.txt", arr_reshaped) # retrieving data from file.loaded_arr = gfg.loadtxt("geekfile.txt") # This loadedArr is a 2D array, therefore# we need to convert it to the original# array shape.reshaping to get original# matrice with original shape.load_original_arr = loaded_arr.reshape( loaded_arr.shape[0], loaded_arr.shape[1] // arr.shape[2], arr.shape[2]) # check the shapes:print("shape of arr: ", arr.shape)print("shape of load_original_arr: ", load_original_arr.shape) # check if both arrays are same or not:if (load_original_arr == arr).all(): print("Yes, both the arrays are same")else: print("No, both the arrays are not same") |
Output:
shape of arr: (5, 4, 3) shape of load_original_arr: (5, 4, 3) Yes, both the arrays are same
