Numpy meshgrid Punkte
Ich möchte die Liste der Punkte, die entsprechen würde, um ein raster. Also, wenn ich will erstellen Sie ein raster für die region von (0,0) nach (1,1), es enthält die Punkte (0,0), (0,1), (1,0), (1,0).
Ich weiß, dass dies mit dem folgenden code:
g = np.meshgrid([0,1],[0,1])
np.append(g[0].reshape(-1,1),g[1].reshape(-1,1),axis=1)
Wodurch das Ergebnis:
array([[0, 0],
[1, 0],
[0, 1],
[1, 1]])
Meine Frage ist eine doppelte:
- Gibt es einen besseren Weg, dies zu tun?
- Gibt es eine Möglichkeit zu verallgemeinern dies zu höheren Dimensionen?
InformationsquelleAutor juniper- | 2012-10-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mir ist gerade aufgefallen, dass die Dokumentation in numpy bietet eine noch schnellere Möglichkeit, dies zu tun:
Dies kann einfach verallgemeinert werden, um weitere Dimensionen, die die verknüpfte meshgrid2 Funktion und mapping 'ravel', um die resultierenden raster.
Das Ergebnis ist etwa 35-mal schneller als die zip-Methode für ein 3D-array mit 1000 ticks auf jeder Achse.
Quelle: http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.gaussian_kde.html#scipy.stats.gaussian_kde
Vergleich der beiden Methoden betrachten Sie das folgende code-Abschnitte:
Erstellen die sprichwörtliche Teilstriche, die helfen, zu erstellen Sie den raster.
Definieren Sie die Funktion, die mgilson verbunden mit der meshgrid:
Erstellen des Gitters und der Zeit der beiden Funktionen.
xxx.py
ist, wo ich Ihre Funktion.Du bist wahrscheinlich mit Python ist3, wo die Karte gibt einen iterator statt einer Liste. Einfachste Sache zu tun ist, um zu wickeln
map
imlist
:lens=list(map(len, arrs))
.Über Numpy 1.8 gibt es keine Notwendigkeit für die
meshgrid2
Funktion, da das standard -meshgrid
Unterstützung von höheren Dimensionen.InformationsquelleAutor juniper-
Sind Ihre gridpoints immer fester? Wenn ja, könnten Sie
numpy.ndindex
Höheren Dimensionen:
Leider nicht den Anforderungen des OP, da die Integrale Annahme (beginnend mit 0) ist nicht erfüllt. Ich lasse diese Antwort nur für den Fall jemand anderes ist auf der Suche für die gleiche Sache, wo diese Annahmen wahr sind.
Einen anderen Weg, dies zu tun beruht auf
zip
:Dieser Anteil skaliert sehr schön auf beliebige Dimensionen. Leider
np.meshgrid
nicht gut zu skalieren, um mehrere Dimensionen, so dass ein Teil wird erarbeitet werden müssen, oder (vorausgesetzt, es funktioniert), können Sie diese SO beantworten erstellen Sie Ihre eigenen ndmeshgrid Funktion.Schade. Ich habe eine andere Lösung, die von Interesse sein könnten ...
Das tun werde. Danke!
Ist es nicht eine große Menge zu konvertieren integral-Indizes
numpy.ndindex
in jeder Art, die Sie benötigen.InformationsquelleAutor mgilson
Noch einen anderen Weg, es zu tun ist:
Kann verallgemeinert werden, zu höheren Dimensionen, z.B.:
InformationsquelleAutor claudiodsf