# NumPy split()

The NumPy `split()` method splits an array into multiple sub-arrays.

### Example

``````import numpy as np

# create a 1-D array
array1 = np.array([0, 1, 2, 3])

# split into two equal length sub-arrays
subArrays= np.split(array1, 2)

print(subArrays)

'''
Output: [array([0, 1]), array([2, 3])]
'''``````

## split() Syntax

The syntax of `split()` is:

``numpy.split(array, indices_or_sections, axis = 0)``

## split() Arguments

The `split()` method takes the following arguments:

• `array` - the array to split
• `indices` - defines indices (as `int` or `1-D array`) in which the array is split
• `axis`(optional) - axis along which the array is to be split

Notes:

• If `indices` are an integer(N), the array is divided into N equal parts.
• If N equal divisions are not possible, an error is raised.
• If `indices` is a 1-D array, the entries indicate the indices where the input array is divided.

## split() Return Value

The `split()` method returns the list of sub-arrays.

## Example 1: Split an Array into Three Arrays

``````import numpy as np

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

# split into 3 arrays
splitArrays = np.split(array1, 3)

print(splitArrays)``````

Output

`[array([[1, 2]]), array([[3, 4]]), array([[5, 6]])]`

## Example 2: Split an Array by Index

``````import numpy as np

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

# indices at which array is split
splitIndices = [2, 5, 8]

# split into subarrays
splitArrays = np.split(array1, splitIndices)

print(splitArrays)``````

Output

`[array([1, 2]), array([3, 4, 5]), array([6]), array([], dtype=int64)]`

When an index exceeds the dimension of the array, the function returns an empty subarray.

## Example 3: Split an Array Across Different Axes

The third parameter is used to split NumPy arrays across different axes. By default, `axis` is set to 0 (column-wise).

``````import numpy as np

# create a 3D array
array1 = np.array([[[1, 2], [3, 4]],
[[5, 6], [7, 8]]])

# split the array column-wise (axis = 0 by default)
splitArrays = np.split(array1, 2)

print("\nSplit array column-wise:")
print(splitArrays)

# split the array row-wise
splitArrays = np.split(array1, 2, axis = 1)

print("Split array row-wise:")
print(splitArrays)

# split the array depth-wise
splitArrays = np.split(array1, 2, axis = 2)

print("\nSplit array depth-wise:")
print(splitArrays)``````

Output

```Split array column-wise:
[array([[[1, 2],
[3, 4]]]), array([[[5, 6],
[7, 8]]])]
Split array row-wise:
[array([[[1, 2]],

[[5, 6]]]), array([[[3, 4]],

[[7, 8]]])]

Split array depth-wise:
[array([[[1],
[3]],

[[5],
[7]]]), array([[[2],
[4]],

[[6],
[8]]])]
> ```

## Example 4: Split an Array into Uneven Sub-arrays

The `split()` function cannot split an array into uneven arrays.

``````import numpy as np

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

# split into 2 arrays
splitArrays = np.split(array1, 2)

print(splitArrays)``````

Output

```ERROR!
raise ValueError(
ValueError: array split does not result in an equal division```

To split an array into unequal subarrays, you can use `array_split()` instead. Let's see an example.

``````import numpy as np

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

# split into 2 arrays
splitArrays = np.array_split(array1, 2)

for array in splitArrays:
print(array,'\n')``````

Output

```[[1 2]
[3 4]]

[[5 6]] ```

## Related Methods

We can also split an array along different axes using the following methods:

• NumPy `hsplit()` - split an array into multiple sub-arrays horizontally
• NumPy `vsplit()` - split an array into multiple sub-arrays vertically
• NumPy `dsplit()` - split an array into multiple sub-arrays along the 3rd axis (depth)

Let's see an example.

``````import numpy as np

# create a 3D array
array1 = np.array([[[1, 2], [3, 4]],
[[5, 6], [7, 8]]])

# split the array column-wise
splitArrays = np.vsplit(array1, 2)

print("\nSplit array column-wise:")
for arr in splitArrays:
print(arr)

# split the array row-wise
splitArrays = np.hsplit(array1, 2)

print("Split array row-wise:")
for arr in splitArrays:
print(arr)

# split the array depth-wise
splitArrays = np.dsplit(array1, 2)

print("\nSplit array depth-wise:")
for arr in splitArrays:
print(arr)``````

Output

```Split array column-wise:
[[[1 2]
[3 4]]]
[[[5 6]
[7 8]]]
Split array row-wise:
[[[1 2]]

[[5 6]]]
[[[3 4]]

[[7 8]]]

Split array depth-wise:
[[[1]
[3]]

[[5]
[7]]]
[[[2]
[4]]

[[6]
[8]]]```