Convert Numpy array to a List – With Examples

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.

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.

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.

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.

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.

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.

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'>

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.

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.