Effiziente standard-basis-Vektor mit numpy
Einem index und einer Größe, ist es ein effizienter Weg zur Herstellung der standard-basis-Vektor:
import numpy as np
np.array([1.0 if i == index else 0.0 for i in range(size)])
InformationsquelleAutor Neil G | 2012-08-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hm, leider, mit np.Auge ist eher langsam:
Verpackung
np.zeros(size); a[index] = 1.0
in einer Funktion macht nur einen bescheidenen Unterschied, und ist immer noch viel schneller alsnp.eye
:Wow. Ich sah am Auge, und übersprungen, weil in der Dokumentation sagt: "Zurückgeben, ein 2-D-array mit Einsen auf der Diagonale und Nullen woanders." Danke.
Ja, ich dachte, sowas wäre möglich, aber ich bin ein wenig überrascht, numpy verwendet
eye
für diese (wie der name schon sagt es ist die Einheitsmatrix und das ist definitiv nicht eine identity-matrix). +1 für eine bessere Antwort als meine obwohl.Hm, vielleicht ist das keine so gute Lösung. Der timeit Ergebnisse zeigen, es ist 5x langsamer als mgilson und JoranBeasley Lösungen.
würden Sie mir den Vergleich, wo die andere Lösung ist eingewickelt in eine Funktion akzeptiert Größe und index? (Ich habe gerade, und es ist nur 2 mal langsamer mit meiner Maschine).
InformationsquelleAutor unutbu
zumindest ich denke, das ist es...
sieht aus wie np.Nullen ist am schnellsten...
Interessanterweise, keiner von uns war im Einklang mit unserer Leerzeichen um
=
(ich habe aktualisiert von mir).heh es behoben, durch das Leerzeichen 😛
InformationsquelleAutor Joran Beasley
Ich bin mir nicht sicher, ob das schneller ist, aber es ist definitiv besser für mich klar.
InformationsquelleAutor mgilson
Es ist vielleicht nicht die Schnellste, aber die Methode
scipy.signal.unit_impulse
verallgemeinert die obige Konzept zu numpy-arrays in beliebiger Form.InformationsquelleAutor Neil G
Oft, müssen Sie nicht eine, sondern alle basis-Vektoren. Wenn dies der Fall ist, sollten
np.eye
:Nicht genau das gleiche, aber eng verwandt: Das funktioniert sogar, um eine Reihe von basis-Matrizen mit ein bisschen tricks:
und so weiter.
InformationsquelleAutor coldfix