How to stack arrays in Numpy?

In this tutorial, we’ll explore how to stack arrays in the NumPy Python library. Stacking arrays is a fundamental operation in data manipulation, often used to combine data from different sources or manipulate multi-dimensional data. NumPy provides several functions for stacking arrays, allowing you to customize the stacking process based on your needs.

stack array vertically numpy vstack

Arrays are stackable. I’ll show how to stack array vertically and horizontally in Python Numpy.

Using vstack

To stack arrays vertically use Numpy vstack function.

import numpy as np

my_array = np.array([[0, 1], [2, 4], [5, 6]])
my_second_array = np.array([[1, 4], [3, 7], [5, 8]])

stacked_array = np.vstack((my_array, my_second_array))
print(f"Arrays stacked vertically: \n {stacked_array}")

stack array vertically numpy vstack

Using hstack

Similarlly you can stack array horizontally with Numpy hstack function.

import numpy as np

my_array = np.array([[0, 1], [2, 4], [5, 6]])
my_second_array = np.array([[1, 4], [3, 7], [5, 8]])

stacked_array = np.hstack((my_array, my_second_array))
print(f"Arrays stacked horizontally: \n {stacked_array}")

stack array horizontally numpy hstack

Stacking based on dimensions

There is also a possible to stack array based on dimensions configured by Numpy stack axis parameter.

See also  How to generate random matrix in Numpy?

Let’s see above example with two different axis parameters based on -1 and 1 dimension of stacking.

import numpy as np

my_array = np.array([[0, 1], [2, 4], [5, 6]])
my_second_array = np.array([[1, 4], [3, 7], [5, 8]])

stacked_array = np.stack((my_array, my_second_array), axis=-1)
print(f"Arrays stacked using axis=-1: \n {stacked_array}")
stacked_array = np.stack((my_array, my_second_array), axis=1)
print(f"Arrays stacked using axis=1: \n {stacked_array}")

stack array axis dimensions

As you can see there are difference in outputs depends on axis parameter chosen.
For 3-dimension axes you can set axis parameter between -3 and 3 (including 0). For every other value you will get different outputs.

See also  How to create numpy array with zeros?

Using dstack

The other stacking possibility is also third axis stack. There is Numpy dstack function for that.

import numpy as np

my_array = np.array([[0, 1], [2, 4], [5, 6]])
my_second_array = np.array([[1, 4], [3, 7], [5, 8]])

stacked_array = np.dstack((my_array, my_second_array))
print(f"Third axis stack: \n {stacked_array}")

numpy third array stack

Now you know so many ways to stack arrays in Python Numpy.

See also  How to you find the cumulative sum in Python?

By mastering these techniques, you can efficiently stack arrays in NumPy for various data manipulation tasks, making your data processing more flexible and versatile.