Skip to content

Convertire numpy.ndarray e lista tra loro

Python

Puoi scegliere un array NumPy numpy.ndarray e un elenco di tipi integrati in Python l’uno con l’altro.

  • Converti un elenco in un array NumPy:numpy.array()
  • Converti un array NumPy in un elenco:tolist()

Per comodità viene utilizzato il termine “convertire”, ma in realtà viene generato un nuovo oggetto mantenendo l’oggetto originale.

Converti un elenco in un array NumPy:numpy.array()

Puoi selezionare un elenco in un array NumPy passando un elenco a numpy.array().

import numpy as np

l_1d = [0, 1, 2]

arr_1d = np.array(l_1d)

print(arr_1d)
print(arr_1d.dtype)
# [0 1 2]
# int64

Il tipo di dati dtype di numpy.ndarray viene determinato automaticamente dall’elenco specificato originale ma può anche essere con il parametro dtype.

Per ulteriori informazioni sul tipo di dati dtype in NumPy, vedere l’articolo seguente.

arr_1d_f = np.array(l_1d, dtype=float)

print(arr_1d_f)
print(arr_1d_f.dtype)
# [0. 1. 2.]
# float64

Lo stesso vale per gli array multidimensionali di due o più dimensioni.

l_2d = [[0, 1, 2], [3, 4, 5]]

arr_2d = np.array(l_2d)

print(arr_2d)
# [[0 1 2]
#  [3 4 5]]

L’elenco multidimensionale è solo un elenco nidificato (elenco di elenchi), quindi non importa se il numero di elementi nell’elenco non corrisponde.

Tuttavia, passandolo a numpy.array() crea numpy.ndarray i cui elementi sono un elenco integrato.

Si noti che gli elementi mancanti non possono essere riempiti.

l_2d_error = [[0, 1, 2], [3, 4]]

arr_2d_error = np.array(l_2d_error)

print(arr_2d_error)
# [list([0, 1, 2]) list([3, 4])]

print(arr_2d_error.dtype)
# object

print(arr_2d_error.shape)
# (2,)

Converti un array NumPy in un elenco:tolist()

Puoi scegliere un array NumPy in un elenco con il metodo tolist() di numpy.ndarray.

A seconda del numero di dimensioni del numpy.ndarray originale, viene generato un elenco nidificato. Ogni elemento è accessibile ripetendo l’indice [n].

1D:

arr_1d = np.arange(3)

print(arr_1d)
# [0 1 2]

l_1d = arr_1d.tolist()

print(l_1d)
# [0, 1, 2]

2D:

arr_2d = np.arange(6).reshape((2, 3))

print(arr_2d)
# [[0 1 2]
#  [3 4 5]]

l_2d = arr_2d.tolist()

print(l_2d)
# [[0, 1, 2], [3, 4, 5]]

3D:

arr_3d = np.arange(24).reshape((2, 3, 4))

print(arr_3d)
# [[[ 0  1  2  3]
#   [ 4  5  6  7]
#   [ 8  9 10 11]]
#  [[12 13 14 15]
#   [16 17 18 19]
#   [20 21 22 23]]]

l_3d = arr_3d.tolist()

print(l_3d)
# [[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]], [[12, 13, 14, 15], [16, 17, 18, 19], [20, 21, 22, 23]]]

print(l_3d[0])
# [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]

print(l_3d[0][0])
# [0, 1, 2, 3]

print(l_3d[0][0][0])
# 0