Ich möchte eine elementweise Multiplikation durchführen, um zwei Listen in Python mit dem Wert zu multiplizieren, wie wir es in Matlab tun können.
So würde ich es in Matlab machen.
a = [1,2,3,4]
b = [2,3,4,5]
a .* b = [2, 6, 12, 20]
Ein Listenverständnis würde 16 Listeneinträge für jede Kombination x * y
von x
von a
und y
von ergeben b
. Unsicher, wie dies abgebildet werden soll.
Wenn jemand interessiert ist, warum, habe ich einen Datensatz und möchte ihn mit multiplizieren Numpy.linspace(1.0, 0.5, num=len(dataset)) =)
.
Antworten:
Verwenden Sie ein Listenverständnis gemischt mit
zip()
:.quelle
map(lambda x,y:x*y,lista,listb)
.listb
einer Liste von Elementen des Typslistb
angegeben werden und wir operieren müssen, um eine einzelne Liste zu erhalten? Ex. (x, pi, e) mit [(4, 5, 2), (1, 2, 4), (4, 5, 6), (1, 1, 2), (3, 3, 4)], wenn genommen (x, pi, e) mit (4, 5, 2) und dann (x, pi, e) mit (1, 2, 4) ... so weiter.Da Sie bereits verwenden
numpy
, ist es sinnvoll, Ihre Daten in einemnumpy
Array anstatt in einer Liste zu speichern . Sobald Sie dies tun, erhalten Sie Dinge wie elementweise Produkte kostenlos:quelle
Verwenden Sie np.multiply (a, b):
quelle
Sie können versuchen, jedes Element in einer Schleife zu multiplizieren. Die kurze Hand dafür ist
quelle
Noch eine Antwort:
-1
... erfordert Import+1
... ist sehr gut lesbarAusgänge [10, 22, 36, 52]
quelle
Ziemlich intuitive Vorgehensweise:
quelle
Sie können mit multiplizieren
lambda
quelle
Bei großen Listen können wir dies iterativ tun:
product_iter_object.next()
gibt jedes Element in der Ausgabeliste an.Die Ausgabe wäre die Länge der kürzeren der beiden Eingabelisten.
quelle
Erstellen Sie eine Reihe von Einsen. Multiplizieren Sie jede Liste mit dem Array. Array in eine Liste konvertieren
quelle
Die Antwort von gahooa ist richtig für die Frage, wie sie in der Überschrift formuliert ist. Wenn die Listen jedoch bereits ein Numpy-Format haben oder größer als zehn sind, ist es VIEL schneller (3 Größenordnungen) und besser lesbar, eine einfache Numpy-Multiplikation durchzuführen, wie von vorgeschlagen NPE. Ich bekomme diese Zeiten:
dh aus dem folgenden Testprogramm.
quelle
Kann Aufzählung verwenden.
quelle
Die
map
Funktion kann hier sehr nützlich sein. Verwenden vonmap
wir jede Funktion auf jedes Element einer Iterable anwenden.Python 3.x.
Natürlich:
ist äquivalent zu
So können wir unsere Lösung erhalten über:
In Python
map()
bedeutet 2.x : Wenden Sie eine Funktion auf jedes Element einer Iterable an und erstellen Sie eine neue Liste. In Python 3.xmap
Iteratoren anstelle von Listen.Stattdessen
my_mul
könnten wir verwendenmul
Operator verwendenPython 2.7
Python 3.5+
Bitte beachten Sie, dass
map()
wir , da wir einen Iterator*
erstellen , den iterierbaren Entpackungsoperator verwenden, um eine Liste zu erhalten. Der Auspackansatz ist etwas schneller als derlist
Konstruktor:quelle
So pflegen Sie den Listentyp in einer Zeile (natürlich nach dem Importieren von numpy als np):
oder
quelle
Sie können dies für Listen gleicher Länge verwenden
quelle