Ich habe zwei Listen, die so aussehen:
%Vor%, die ich Element für Element für eine Ausgabe wie folgt abziehen möchte:
%Vor% Um dies zu tun, konvertiere ich jedes von a
und b
in Arrays und subtrahiere sie, die ich benutze:
Die Ausgabe gibt mir nur den Fehler:
Nicht unterstützter Operandentyp für: 'Liste' und 'Liste'
Was mache ich falsch? Sollte nicht der Befehl np.array
die Konvertierung in das Array sicherstellen?
Die Dimensionen Ihrer beiden Arrays stimmen nicht überein, d. h. die ersten beiden Unterlisten von a
haben 4 Elemente, aber die dritte hat 5 und ditto mit b
. Wenn Sie die Listen in numpy arrays
konvertieren, gibt numpy
automatisch so etwas wie folgt aus:
Sie müssen sicherstellen, dass alle Ihre Unterlisten die gleiche Anzahl von Elementen haben, dann funktioniert Ihr Code:
%Vor%Ein geschachteltes Listenverständnis wird die Aufgabe erfüllen:
%Vor% Das Problem mit np.array(a)-np.array(b)
besteht darin, dass sich die Unterlisten in der Länge unterscheiden, also sind die resultierenden Arrays Objekttypen - Arrays von Listen
Subtraction iteriert gerade über das äußere Array, trifft aber auf ein Problem, wenn eine Subliste von einer anderen subtrahiert wird - daher die Fehlermeldung.
Wenn ich die Eingaben Arrays von Arrays gemacht habe, wird die Subtraktion funktionieren
%Vor% Sie können nicht zählen, dass Array-Operationen an Objekt-Dtyp-Arrays arbeiten. Aber in diesem Fall ist subtraction
für die Subarrays definiert, damit es die Verschachtelung verarbeiten kann.
Eine weitere Möglichkeit, die Verschachtelung durchzuführen, ist die Verwendung von np.subtract
. Dies ist eine ufunc
Version von -
und wendet np.asarray
nach Bedarf auf seine Eingaben an:
Beachten Sie, dass diese Array-Berechnungen Arrays oder eine Liste von Arrays zurückgeben. Das Zurückdrehen der inneren Arrays in Listen erfordert eine Iteration.
Wenn Sie mit Listen beginnen, spart die Konvertierung in Arrays oft nicht viel Zeit. Array-Berechnungen können schneller sein, aber dies kompensiert nicht den Overhead beim Erstellen der Arrays an erster Stelle.
Wenn ich die Eingaben auf die gleiche Länge padde, dann funktioniert die einfache Array-Subtraktion und erzeugt ein 2d-Array.
%Vor%