# 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))`

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