I haben eine Liste von 2D-Koordinaten als NumPy Array, z.B.Numpy Äquivalent Reißverschluss mit gewalzten 2D-Array
x = np.asarray([[0, 1],
[1, 2],
[2, 3]])
von Form (3,2)
.
Jetzt möchte ich mit np.roll(x, 1)
dieses Array zip-Paare zu erhalten Koordinatenlinien zu ziehen zwischen (einschließlich der Linie vom letzten zum ersten Element. Die Reihenfolge der Zeilen spielt keine Rolle.
Ich habe bereits eine Lösung mit dem Standard-Python Zip gefunden:
>>> np.asarray(list(zip(list(x[-1:]) + list(x[:-1]), x)))
array([[[2, 3],
[0, 1]],
[[0, 1],
[1, 2]],
[[1, 2],
[2, 3]]])
Wie kann ich die numpy Funktionen ohne Umwandlung in Python-Listen, um dieses Ergebnis zu erhalten verwenden
Meine bisherigen Versuche es mit numPy tun gescheitert mise rably, zum Beispiel:
>>> np.dstack([x, np.roll(x, 1)])
array([[[0, 3],
[1, 0]],
[[1, 1],
[2, 1]],
[[2, 2],
[3, 2]]])
Edit: Dies ist kein Versuch, Kombinationen von x mit einem anderen Array zu erstellen, so dass die vorgeschlagene doppelt kein Duplikat ist.
Dank! Ich habe die Option "Achsen" komplett vermisst. Die Ausgabe bedeutet "zeichne Linie von (2,3) bis (0,1), zeichne Linie von (0,1) bis (1,2) usw.". Wenn x alle Punkte eines Polygons enthält, zeichnet dies das Polygon. –
Ich versetze Achsen um zu transponieren, nicht um zu stapeln. – wim
Oh ... deshalb habe ich es vermisst :-) Danke. Sicher habe ich etwas daraus gelernt! –