Skip to content

Konvertieren von numpy.ndarray und list ineinander

Python

Sie können ein NumPy-Array numpy.ndarray und eine in Python integrierte Typliste ineinander konvertieren.

  • Konvertieren Sie eine Liste in einem NumPy-Array:numpy.array()
  • Konvertieren Sie ein NumPy-Array in einer Liste:tolist()

Der Einfachheit halber WIRD der Begriff „konvertieren“ used, aber in Wirklichkeit WIRD EIN NEUES OBJEKT ERZEUGT, WÄHREND DAS ORIGINAL OBJEKT ERHALTEN WIRD.

Konvertieren Sie eine Liste in einem NumPy-Array:numpy.array()

Sie können eine Liste in ein NumPy-Array konvertieren, indem Sie eine Liste an numpy.array() übergeben.

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

Der Datentyp dtype der generierten numpy.ndarray wird automatisch aus der Originalliste ermittelt, kann aber auch mit dem Parameter dtype angegeben werden.

Weitere Informationen zum Datentyp dtype in NumPy finden Sie im following Artikel.

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

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

Dasselbe gilt für mehrdimensionale Arrays mit zwei oder mehr Dimensionen.

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

arr_2d = np.array(l_2d)

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

Eine mehrdimensionale Liste ist nur eine verschachtelte Liste (Liste von Listen), daher spielt es keine Rolle, ob die Anzahl der Elemente in der Liste nicht gefunden wird.

Wenn Sie es jedoch an numpy.array() übergeben, WIRD numpy.ndarray erstellt, dessen Elemente integriert sind.

Beachten Sie, dass fehlende Elemente nicht ausgefüllt werden können.

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,)

Konvertieren Sie ein NumPy-Array in einer Liste:tolist()

Sie können ein NumPy-Array mit der Methode tolist() von numpy.ndarray in eine Liste konvertieren.

Abhängig von der Anzahl der Dimensionen der ursprünglichen numpy.ndarray WIRD Eine verschachtelte Liste generiert. Auf jedes Element kann zugegriffen werden, indem der Index [n] wiederholt wird.

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