There are a few ways of converting a numpy array to a python list. The numpy ndarray object has a handy `tolist()`

function that you can use to convert the respect numpy array to a list. You can also use the Python built-in `list()`

function to get a list from a numpy array. Let’s see their usage through some examples.

## 1. Using numpy ndarray `tolist()`

function

It returns a copy of the array data as a Python list. The list maybe nested depending on the dimensionality of the numpy array. The following is the syntax:

# arr is a numpy array ls = arr.tolist()

Note that the `tolist()`

function does not take any arguments. Also, in the list returned, the data items do not retain their numpy data types, they are converted to their nearest compatible built-in Python types.

Let’s look at some the examples of using the numpy ndarray `tolist()`

function.

### 1.1 Convert a 1D numpy array to a list

import numpy as np # sample numpy 1D array arr = np.array([1,2,3,4]) # print print("Numpy array: ", arr) print("Type: ",type(arr)) # convert to a list ls = arr.tolist() # print print("\nList: ", ls) print("Type: ",type(ls))

Output:

Numpy array: [1 2 3 4] Type: <class 'numpy.ndarray'> List: [1, 2, 3, 4] Type: <class 'list'>

In the above example, the `tolist()`

function is applied to the numpy array `arr`

and the returned list is saved to `ls`

.

### 1.2 Convert a 2D numpy array to a list

import numpy as np # sample numpy 2D array arr = np.array([[1,2,3],[4,5,6]]) # print print("Numpy array: ", arr) print("Type: ",type(arr)) # convert to a list ls = arr.tolist() # print print("\nList: ", ls) print("Type: ",type(ls))

Output:

Numpy array: [[1 2 3] [4 5 6]] Type: <class 'numpy.ndarray'> List: [[1, 2, 3], [4, 5, 6]] Type: <class 'list'>

Note that the returned list is nested because the numpy array was multi-dimensional.

## 2. Using the built-in `list()`

function

You can also use the built-in Python function `list()`

to convert a numpy array. The following is the syntax:

# arr is a numpy array ls = list(arr)

Let’s look at some the examples of using the `list()`

function.

### 2.1 Convert a 1D array to a list

import numpy as np # sample numpy 1D array arr = np.array([1,2,3,4]) # print print("Numpy array: ", arr) print("Type: ",type(arr)) # convert to a list using list() ls = list(arr) # print print("\nList: ", ls) print("Type: ",type(ls))

Output:

Numpy array: [1 2 3 4] Type: <class 'numpy.ndarray'> List: [1, 2, 3, 4] Type: <class 'list'>

In the above example, the `list()`

function is applied on the numpy array `arr`

and the returned list is saved to `ls`

.

### 2.2 Convert a 2D array to a list

import numpy as np # sample numpy 2D array arr = np.array([[1,2,3],[4,5,6]]) # print print("Numpy array: ", arr) print("Type: ",type(arr)) # convert to a list using list() ls = list(arr) # print print("\nList: ", ls) print("Type: ",type(ls))

Output:

Numpy array: [[1 2 3] [4 5 6]] Type: <class 'numpy.ndarray'> List: [array([1, 2, 3]), array([4, 5, 6])] Type: <class 'list'>

Using the `list()`

function on multi-dimensional array returns a list of numpy arrays.

print(type(ls[0]))

Output:

<class 'numpy.ndarray'>

## 3. Difference between numpy ndarray `tolist()`

and the built-in `list()`

functions

The above examples illustrated the usage of the two functions. The returned lists were different when these functions were applied to a multi-dimensional array. There is, however, one more major difference between the two. With the numpy ndarray `tolist()`

function, the data items are converted to their nearest compatible built-in Python types whereas, with the `list()`

function, the numpy types of the data items are preserved. See the example below:

import numpy as np # sample numpy 1D array arr = np.array([1,2,3,4]) # convert to a list using tolist() ls1 = arr.tolist() # convert to a list using list() ls2 = list(arr) # print ls1 print("ls1: ", ls1) print("Type of items: ",[type(i) for i in ls1]) # print ls2 print("\nls2: ", ls2) print("Type of items: ",[type(i) for i in ls2])

Output:

ls1: [1, 2, 3, 4] Type of items: [<class 'int'>, <class 'int'>, <class 'int'>, <class 'int'>] ls2: [1, 2, 3, 4] Type of items: [<class 'numpy.int32'>, <class 'numpy.int32'>, <class 'numpy.int32'>, <class 'numpy.int32'>]

You can see that in the list returned by the `tolist()`

function, `ls1`

, each item has been converted to its compatible python data type whereas, in the list returned by the `list()`

function, `ls2`

, each item retains its type from the numpy array.

## 4. Conclusion

Generally, when converting a numpy array to a Python list, use the numpy ndarray `tolist()`

function. It returns a list with python compatible types and works well with multidimensional arrays. Use the `list()`

function when you want to retain the numpy types.

For more on the numpy ndarray `tolist()`

function, refer to its offical documentation.

With this, we come to the end of this tutorial. The code examples and results presented in this tutorial have been implemented in a Jupyter Notebook with a python (version 3.8.3) kernel having numpy version 1.18.5

**Subscribe to our newsletter for more informative guides and tutorials. ****We do not spam and you can opt out any time.**

Tutorials on python lists:

- Python – Check if an element is in a list
- Python – Iterate over multiple lists in parallel using zip()
- Python – Flatten a list of lists to a single list
- Pandas DataFrame to a List in Python
- Python – Convert List to a String
- Convert Numpy array to a List – With Examples
- Python List Comprehension – With Examples
- Python List Index – With Examples
- Python List Count Item Frequency
- Python List Length
- Python Sort a list – With Examples
- Python Reverse a List – With Examples
- Python Remove Duplicates from a List
- Python list append, extend and insert functions.
- Python list remove, pop and clear functions.