
In diesem Artikel wird erläutert, wie SIE ein eindimensionales Array in Python in ein zweidimensionales Array konvertieren, sowohl für NumPy-Arrays als auch für integrierte Listen list.
- Konvertieren Sie ein eindimensionales numpy.ndarray in ein zweidimensionales numpy.ndarray
- Wandeln Sie eine eindimensionale Liste in eine zweidimensionale Liste um
Im Gegenteil, siehe folgenden Artikel, wie man ein mehrdimensionales Array in ein eindimensionales Array umwandelt (= glättet).
Konvertieren Sie ein eindimensionales numpy.ndarray in ein zweidimensionales numpy.ndarray
Verwenden Sie die Methode reshape(), um die Form eines NumPy-Arrays zu transformieren. Jede Formtransformation ist möglich, nicht beschränkt auf die Transformation von einem eindimensionalen Array in ein zweidimensionales Array.
Durch die Verwendung von -1 WIRD die Größe der Dimension automatisch berechnet.
import numpy as np
a = np.arange(6)
print(a)
# [0 1 2 3 4 5]
print(a.reshape(2, 3))
# [[0 1 2]
# [3 4 5]]
print(a.reshape(-1, 3))
# [[0 1 2]
# [3 4 5]]
print(a.reshape(2, -1))
# [[0 1 2]
# [3 4 5]]
Wenn SIE EINE Form angeben, die nicht konvertiert werden kann, WIRD ein Fehler ausgelöst.
# print(a.reshape(3, 4))
# ValueError: cannot reshape array of size 6 into shape (3,4)
# print(a.reshape(-1, 4))
# ValueError: cannot reshape array of size 6 into shape (4)
Wandeln Sie eine eindimensionale Liste in eine zweidimensionale Liste um
Mit NumPy
Mit NumPy können Sie die Liste in numpy.ndarray konvertieren und die Form mit reshape() transformieren und sie dann in die Liste zurückgeben.
l = [0, 1, 2, 3, 4, 5]
print(np.array(l).reshape(-1, 3).tolist())
# [[0, 1, 2], [3, 4, 5]]
print(np.array(l).reshape(3, -1).tolist())
# [[0, 1], [2, 3], [4, 5]]
Im following Artikel erfahren Sie, wie Sie numpy.ndarray und list ineinander konvertieren.
Ohne NumPy
Ohne NumPy können Sie List Comprehensions, range() und Slices wie folgt verwenden.
def convert_1d_to_2d(l, cols):
return [l[i:i + cols] for i in range(0, len(l), cols)]
l = [0, 1, 2, 3, 4, 5]
print(convert_1d_to_2d(l, 2))
# [[0, 1], [2, 3], [4, 5]]
print(convert_1d_to_2d(l, 3))
# [[0, 1, 2], [3, 4, 5]]
print(convert_1d_to_2d(l, 4))
# [[0, 1, 2, 3], [4, 5]]
Das erste Argument ist die ursprüngliche Liste und das zweite Argument ist die Anzahl der Elemente der inneren Liste (= Anzahl der Spalten). Bei Einem Rest WIRD Wie im Letzten Beispiel Eine Liste Mit Einer Anderen Anzahl von Elementen Gespeichert.
Wenn SIE die Anzahl der Zeilen angeben möchten:
def convert_1d_to_2d_rows(l, rows):
return convert_1d_to_2d(l, len(l) // rows)
print(convert_1d_to_2d_rows(l, 2))
# [[0, 1, 2], [3, 4, 5]]
print(convert_1d_to_2d_rows(l, 3))
# [[0, 1], [2, 3], [4, 5]]
print(convert_1d_to_2d_rows(l, 4))
# [[0], [1], [2], [3], [4], [5]]
Die Funktion in diesem Beispiel ist einfach. Wenn es nicht teilbar ist, unterscheidet sich das Ergebnis von der angegebenen Anzahl von Zeilen, wie im letzten Beispiel.