Contents:

You can save the NumPy array to a text file using the **savetxt()** function.

For example, imagine that we created an array called numpy_array, containing 8 values from -2 to 5. Next, we are going to use this command:

```
import numpy as np
numpy_array = np.array([-2, -1, 0, 1, 2, 3, 4, 5])
np.savetxt("array.txt", numpy_array)
```

Open the text file to see how the array looks like.

You can also save individual items to an array, but you have to pass an individual element as a list.

`np.savetxt(array_file, [numpy_array[0]], fmt="%s")`

If you pass an individual value without taking it into square brackets, it will result in an error.

ValueError: Expected 1D or 2D array, got 0D array instead

## Formatting values with the fmt parameter

The **savetxt()** function can take multiple parameters. One of them is **fmt**. This parameter is responsible for formatting an array inside a text file.

Although I inserted integers, the values inside the text file are formatted as floating-point numbers with lots of zeros after the decimal point.

To change this, we can modify the function this way:

`np.savetxt(array_file, numpy_array, fmt="%s")`

If we run the code and open the text file, it will show only integers.

## Saving a 2D array to a file

We saved a 1D array to a file and it works fine, but the error message shows that we can also save a 2D array. There are at least two ways we can do it.

The first way is to use a 2D array as a parameter:

`numpy_array = np.array([[-2, -1], [0, 1], [2, 3], [4, 5]])`

Another way to do it is to use the **reshape()** function. This function changes the shape of an array without changing its data.

`numpy_array = np.array([-2, -1, 0, 1, 2, 3, 4, 5]).reshape(4, 2)`

Whichever method you choose, the data inside the file will be formatted the same way.

## Load NumPy array from a file

After saving data into a text file we are going to load it into a NumPy array.

For this we will use the **np.loadtxt()** function.

`original_array = np.loadtxt("array.txt")`

When you load data from a text file, you can also use the **reshape()** function to change the shape of a loaded data.

```
import numpy as np
numpy_array = np.array([-2, -1, 0, 1, 2, 3, 4, 5]).reshape(4, 2)
np.savetxt("array.txt", numpy_array, fmt="%s")
original_array = np.loadtxt("array.txt").reshape(2, 4)
print(original_array)
```

In this example, we inserted an array that looks like that:

[[-2, -1], [0, 1], [2, 3], [4, 5]]

After reshaping it, it takes a different form:

[[-2, -1, 0, 1], [2, 3, 4, 5]]

This is the whole code:

```
import numpy as np
numpy_array = np.array([-2, -1, 0, 1, 2, 3, 4, 5]).reshape(4, 2)
np.savetxt("array.txt", numpy_array, fmt="%s")
original_array = np.loadtxt("array.txt").reshape(2, 4)
print(original_array)
```

Run it to print the array.

[[-2. -1. 0. 1.] [ 2. 3. 4. 5.]]