Wie führe ich eine elementweise Multiplikation zweier Listen in Python durch?
Ich möchte ein element-Weise Multiplikation, multiplizieren von zwei Listen zusammen, die von Wert in Python, wie wir es tun können in Matlab.
Dies ist, wie ich es tun würde in Matlab.
a = [1,2,3,4]
b = [2,3,4,5]
a .* b = [2, 6, 12, 20]
Einer Liste Verständnis geben würde 16 Liste der Einträge, für jede Kombination x * y
von x
aus a
und y
aus b
. Unsicher, wie diese Karte.
Wenn jemand interessiert ist, warum, ich habe einen Datensatz, und möchten, multiplizieren Sie es durch Numpy.linspace(1.0, 0.5, num=len(dataset)) =)
.
InformationsquelleAutor der Frage xxjjnn | 2012-04-22
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden einer list-comprehension gemischt mit
zip()
:.InformationsquelleAutor der Antwort gahooa
Da Sie bereits mit
numpy
macht es Sinn, um Ihre Daten zu speichern in einernumpy
array statt einer Liste. Sobald Sie dies tun, erhalten Sie Dinge wie element-wise-Produkte kostenlos:InformationsquelleAutor der Antwort NPE
Verwenden, np.multiply(a,b):
InformationsquelleAutor der Antwort Brisa
Können Sie versuchen, die Multiplikation jedes element in einer Schleife. Die Abkürzung dafür ist
InformationsquelleAutor der Antwort Nate
Ziemlich intuitive Art und Weise, dies zu tun:
InformationsquelleAutor der Antwort Turtleneck
Noch eine andere Lösung:
-1
... erfordert import+1
... ist sehr gut lesbarAusgänge [10, 22, 36, 52]
InformationsquelleAutor der Antwort Petr Vepřek
Für große Listen, wir können es tun, iter-Weg:
product_iter_object.next()
gibt jedes element in der Liste der Ausgabespalten.Die Ausgabe wäre die Länge der kürzeren der beiden input-Listen.
InformationsquelleAutor der Antwort aady
erstellen Sie ein array von Einsen;
multiplizieren Sie jede Liste mal die array;
konvertieren array zu einer Liste
InformationsquelleAutor der Antwort litepresence
können Sie Multiplikation mit
lambda
InformationsquelleAutor der Antwort Benjamin
gahooa s Antwort ist korrekt, für die Frage, wie formuliert in der überschrift, aber wenn die Listen sind bereits numpy-format oder größer als zehn werden es VIEL schneller (3 Größenordnungen) sowie mehr lesbar, zu tun, einfache numpy Multiplikation vorgeschlagen von NPE. Bekomme ich diese timings:
d.h. aus dem folgenden Programm testen.
InformationsquelleAutor der Antwort paddyg
Den
map
- Funktion kann hier sehr hilfreich.Mit
map
können wir eine beliebige Funktion auf jedes element eines durchsuchbar.Python 3.x
Natürlich:
entspricht
So können wir unsere Lösung über:
In Python 2.x
map()
bedeutet: anwenden einer Funktion auf jedes element eines wiederholenden und erstellen Sie eine neue Liste.In Python 3.x,
map
konstruieren Iteratoren statt Listen.Statt
my_mul
könnten wirmul
BetreiberPython 2.7
Python 3.5+
Bitte beachten Sie, dass seit
map()
Konstrukte, die einen iterator verwenden wir*
iterierbar Auspacken-operator, um eine Liste.Das Auspacken Ansatz ist ein bisschen schneller als die
list
Konstruktor:InformationsquelleAutor der Antwort sg7
Verwenden können, aufgelistet werden.
InformationsquelleAutor der Antwort Vikram S
Pflegen der Liste Typ, und tun es in einer Zeile (nach dem Import numpy as np, natürlich):
oder
InformationsquelleAutor der Antwort mightypile