convert numpy array to list

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 may be 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.

convert numpy array to 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.

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:

📚 Data Science Programs By Skill Level

Introductory

Intermediate ⭐⭐⭐

Advanced ⭐⭐⭐⭐⭐

🔎 Find Data Science Programs 👨‍💻 111,889 already enrolled

Disclaimer: Data Science Parichay is reader supported. When you purchase a course through a link on this site, we may earn a small commission at no additional cost to you. Earned commissions help support this website and its team of writers.

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.


Author

  • Piyush Raj

    Piyush is a data professional passionate about using data to understand things better and make informed decisions. He has experience working as a Data Scientist in the consulting domain and holds an engineering degree from IIT Roorkee. His hobbies include watching cricket, reading, and working on side projects.

Scroll to Top