# NumPy dstack()

The `dstack()` method stacks the sequence of input arrays depthwise.

### Example

``````import numpy as np

array1 = np.array([[0, 1], [2, 3]])
array2 = np.array([[4, 5], [6, 7]])

# stack the arrays
stackedArray = np.dstack((array1, array2))

print(stackedArray)

'''
Output

[[[0 4]
[1 5]]

[[2 6]
[3 7]]]
'''``````

## dstack() Syntax

The syntax of `dstack()` is:

``numpy.dstack(tup)``

## dstack() Argument

The `dstack()` method takes a single argument:

• `tup` - a tuple of arrays to be stacked

Note: The shape of all arrays in a given tuple must be the same, except for the third dimension because we are stacking in axis 2 (depthwise).

## dstack() Return Value

The `dstack()` method returns the depthwise stacked array.

## Example 1: Stack Arrays of Different Shapes Depthwise

``````import numpy as np

# 3-D array with shape (2,2,2)
array1 = np.array([[[0, 1], [2,3]],
[[4, 5], [6, 7]]])

# 3-D array with shape (2,2,1)
array2 = np.array([[[4], [5]],
[[6], [7]]])

# stack the arrays
stackedArray = np.dstack((array1, array2))

print(stackedArray)``````

Output

```[[[0 1 4]
[2 3 5]]

[[4 5 6]
[6 7 7]]]```

Here, we have stacked 2 arrays of different shapes.

The shape of array2 is `(2, 2, 1)`, yet we could stack it with array1 of shape `(2, 2, 2)` because only the third dimension of array2 is different from array1.

## Example 2: Stack Arrays Depthwise With Invalid Shapes

``````import numpy as np

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

array2 = np.array([[[4], [5], [6]],
[[7], [8], [9]]])

# stack the arrays with invalid shapes
stackedArray = np.dstack((array1, array2))

print(stackedArray)``````

Output

`ValueError: all the input array dimensions except for the concatenation axis must match exactly, but along dimension 1, the array at index 0 has size 2 and the array at index 1 has size 3`

Here, the shape of array2 is `(2, 3, 1)`, which which results in ValueError while stacking with arrays of shape `(2, 2, 2)`.