Return the array as an a.ndim-levels deep nested list of Python scalars.

Return a copy of the array data as a (nested) Python list. Data items are converted to the nearest compatible builtin Python type, via the ~numpy.ndarray.item function.

If a.ndim is 0, then since the depth of the nested list is 0, it will not be a list at all, but a simple Python scalar.




y – The possibly nested list of array elements.

Return type

object, or list of object, or list of list of object, or …


The array may be recreated via a = np.array(a.tolist()), although this may sometimes lose precision.


For a 1D array, a.tolist() is almost the same as list(a), except that tolist changes numpy scalars to Python scalars:

>>> a = np.uint32([1, 2])  
>>> a_list = list(a)  
>>> a_list  
[1, 2]
>>> type(a_list[0])  
<class 'numpy.uint32'>
>>> a_tolist = a.tolist()  
>>> a_tolist  
[1, 2]
>>> type(a_tolist[0])  
<class 'int'>

Additionally, for a 2D array, tolist applies recursively:

>>> a = np.array([[1, 2], [3, 4]])  
>>> list(a)  
[array([1, 2]), array([3, 4])]
>>> a.tolist()  
[[1, 2], [3, 4]]

The base case for this recursion is a 0D array:

>>> a = np.array(1)  
>>> list(a)  
Traceback (most recent call last):
TypeError: iteration over a 0-d array
>>> a.tolist()  

This docstring was copied from numpy.ndarray.