How to split an array into multiple arrays in Numpy? In NumPy, the numpy.split()
function can be used to split an array into more than one (multiple) sub arrays as views. This function divides the array into subarrays along with a specified axis. The function takes three parameters array
, indices_or_sections
, and axis
.
In this article, I will explain with examples how to split Python NumPy array by using numpy.split()
function.
1. Quick Examples of NumPy Array Split
If you are in a hurry, below are some quick examples of how to use the NumPy array split() function.
# Quick examples of numpy array split
# Example 1: Use numpy.split() function
arr = np.array([5,7,9,11,13,19,23,27])
subarrays = np.split(arr,4)
# Example 2: Using numpy.split() function
# To split the array into subarrays
arr = np.array([5,7,9,11,13,19,23,27])
subarrays = np.split(arr, [2, 5, 7])
# Example 3: Use split array along axis = 0
arr = np.array([[15,28,57,65],[25,37,55,88]])
subarrays = np.split(arr, 2, axis=0)
# Example 4: Use split array along axis = 1
arr = np.array([[15,28,57,65],[25,37,55,88]])
subarrays = np.split(arr, 2, axis=1)
# Example 5: Use split array columns via slicing
arr = np.array([[15,28,57,65],[25,37,55,88]])
subarrays = np.split(arr, (2,3), axis=1)
# Example 6: Use numpy.split() function
# Returning value error
arr = np.array([5,7,9,11,13,19,23,27])
subarrays = np.split(arr,5)
2. Syntax of array split()
Following is the syntax of the numpy.split()
function.
# Syntax numpy.split()
numpy.split(array, indices_or_sections, axis=0)
2.1 Parameters of split()
Following are the parameters of split()
function.
arr
– Array to be divided into sub-arrays.indices_or_sections
– If it’s an integer, it indicates the number of equal division points. If it’s a 1-D array of sorted integers, the entries indicate the split points.axis
– (Optional) The axis along which arr is split. The default value is 0, indicating the first axis. If you want to split along columns, set axis=1
2.2 Return Value of split()
It returns a list of sub-arrays. If indices_or_sections
is given as an integer, but it’s unable to split in equal division, it raises a ValueError
.
3. Use numpy split()
You can use the numpy.split()
function to split an array into multiple subarrays. Below are some points to note while splitting the array.
- Equal Splitting: When using a scalar integer value for
indices_or_sections
, the array is divided into equally shaped sub-arrays along the specified axis. If the input array’s shape is not evenly divisible by the number of sections, it may raise an error. - Custom Splitting: Providing an array of indices specifies the positions at which the array should be split. For instance, passing
[3, 5]
would split the array at indices 3 and 5. - Splitting Along Different Axes: By adjusting the
axis
parameter, you can split the array along different axes, such as rows (axis=0) or columns (axis=1). - Handling Remainder: If the array cannot be evenly divided, the behavior depends on the axis and the method used for splitting. For example, the
numpy.array_split()
function allows uneven splits and handles any remaining elements. - Efficiency: While
numpy.split()
divides the array into equal-sized sub-arrays,numpy.array_split()
can handle uneven splits.
# Import numpy
import numpy as np
# Creating an input array
arr = np.array([5,7,9,11,13,19,23,27])
print ("Creating an input array:\n", arr)
# Use numpy.split() function
subarrays = np.split(arr,4)
print ("After splitting array:\n", subarrays)
Yields below output. Here, the numpy.split()
function is used to split the input array arr
into 4 equal-sized subarrays. In this case, the input array arr
has 8 elements. The np.split()
function divides it into 4 equal subarrays.
As you can see, the input array has been split into four subarrays, each containing two elements.
4. Use split() Function to Split 1-D Array
The numpy.split()
function can be used to split a 1-D array into multiple subarrays. For instance, the numpy.split()
function is used to split the input array arr
at the indices [2, 5, 8]
. This means the array will be split into four subarrays: Elements from index 0 to 1: [5, 7]
. Elements from index 2 to 4: [9, 11, 13]
. Elements from index 5 to 6: [19, 23]
. Elements from index 7 to the end: [27]
.
import numpy as np
# Creating a 1-D input array
arr = np.array([5,7,9,11,13,19,23,27])
print("Creating an input array:\n", arr)
# Using numpy.split() function
# To split the array into subarrays
subarrays = np.split(arr, [2, 5, 7])
print("After splitting array:\n", subarrays)
Yields below output.
5. Split 2-D Array Use split() Function
You can use the numpy.split()
function to split a 2-D array along a specified axis. Use numpy.split()
function to split an array into more than one sub-array vertically (row-wise). There are two ways to split the array one is row-wise and the other is column-wise. By default, the array is split in row-wise (axis=0)
.
import numpy as np
# Creating an 2D input array
arr = np.array([[15,28,57,65],[25,37,55,88]])
print("Creating an input 2-D array:\n", arr)
# Use split array along axis = 0
subarrays = np.split(arr, 2, axis=0)
print("After splitting 2-D array along axis 0:\n", subarrays)
# Output:
# Creating an input 2-D array:
# [[15 28 57 65]
# [25 37 55 88]]
# After splitting 2-D array along axis 0:
# [array([[15, 28, 57, 65]]), array([[25, 37, 55, 88]])]
You can also use numpy.split()
function to split an array into multiple sub-arrays horizontally (column-wise). You can perform a horizontal split with the numpy.split()
function. By using axis=1
along with the input array and the number of sections to split.
import numpy as np
# Creating an 2D input array
arr = np.array([[15,28,57,65],[25,37,55,88]])
print("Creating an input 2-D array:\n", arr)
# Use split array along axis = 1
subarrays = np.split(arr, 2, axis=1)
print("After splitting 2-D array along axis 1:\n", subarrays)
# Output:
# Creating an input 2-D array:
# [[15 28 57 65]
# [25 37 55 88]]
# After splitting 2-D array along axis 1:
# [array([[15, 28],
# [25, 37]]), array([[57, 65],
# [55, 88]])]
To create a 2-D NumPy array and then use slicing along the columns to split the array into subarrays. In this code, the np.split()
function is not directly used. Instead, the splitting is achieved by slicing the array along axis 1 at the indices (2, 3)
.
import numpy as np
# Creating an 2D input array
arr = np.array([[15,28,57,65],[25,37,55,88]])
# Use split array columns via slicing
subarrays = np.split(arr, (2,3), axis=1)
print("After splitting array columns via slicing:\n", subarrays)
# Output:
# After splitting array columns via slicing:
# [array([[15, 28],
# [25, 37]]), array([[57],
# [55]]), array([[65],
# [88]])]
6. Split() Returning ValueError
If split()
function is unable to split in an equal division it returns a ValueError: array split does not result in an equal division. In our example below, I am trying to split 8 elements into 5 slices which is not possible hence it returns an error.
import numpy as np
# Creating an input array
arr = np.array([5,7,9,11,13,19,23,27])
# Use numpy.split() function
# Returning valueError
subarrays = np.split(arr,5)
print("After splitting array:\n", subarrays)
# Output:
# ValueError: array split does not result in an equal division
Frequently Asked Questions
The numpy.split()
function in the NumPy library is used to split an array into multiple subarrays along a specified axis. The function takes three parameters array
, indices_or_sections
, and axis
.
You can split a 1-D array into equal parts using numpy.split()
, you need to specify the number of parts you want the array to be divided into.
You can split a 2-D array into rows and columns using numpy.split()
. You can specify the axis along which you want to split the array. If you want to split along rows, you can set axis=0
. If you want to split along columns, you can set axis=1
.
You can split an array at specific indices using numpy.split()
. When you use numpy.split()
, you provide a list of indices where you want to split the array.
If the array size is not divisible by the number of parts, numpy.split()
will raise a ValueError
because it cannot create equal-sized subarrays. Make sure the array size is compatible with the number of parts.
Conclusion
In NumPy, the split()
function is used to split an array into multiple sub-arrays along a specified axis. When using a scalar integer value for indices_or_sections
, the array is divided into equally shaped sub-arrays along the specified axis. If the input array’s shape is not evenly divisible by the number of sections, it may raise an error. Providing an array of indices specifies the positions at which the array should be split. For instance, passing [3, 5]
would split the array at indices 3 and 5.
Happy Learning!!
Related Articles
- How to get square values of an array
- Python NumPy repeat() Function
- Python NumPy Reverse Array
- NumPy power() Function in Python
- NumPy where() Multiple Conditions
- NumPy Empty Array With Examples
- How to Append NumPy Arrays Examples
- How to Use NumPy Random choice() in Python
- How to Use NumPy random.normal() In Python
- How to Calculate minimum() of Array in NumPy