Array Anordnung

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Juan.Herrera
User
Beiträge: 1
Registriert: Donnerstag 16. Juni 2022, 14:06

Hallo Zusammen,

ich habe ein 2dim Array was ungefähr folgende Form hat.

[[1,2,3,4,5,6,7,8,9,10][1,2,3,4,5,6,7,8,9,10]]

zusammen bildet das Array eine Funktion, die geplottet werden kann.
dabei sind die x werte die erste Zeile und die y werte die zweite.

Ich habe also folgende Punkte (1,1)(2,2),...,(10,10)

Tatsächlich habe ich über 500 werte pro Zeile und die sind jeweils sehr unterschiedlich.
Gefragt ist immer die kürzeste Distanz zum Nächstliegenden Punkt für alle Punkte.
Dafür soll ich alle Abstände aller Punkte zu allen anderen Punkten bilden, und dann bei allen den kleinsten jeweils rechnen.
die Abstände sollen dann von kleinsten bis größten (Abstand) in einem neuen Array sortiert werden.

Wie wurdet ihr das machen?

Vielen dank, beste Grüße
Benutzeravatar
__blackjack__
User
Beiträge: 10537
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Juan.Herrera: Suchst Du so was wie `scipy.spatial.distance_matrix()`?
“»So computers are tools of the devil?« thought Newt. He had no problem believing it. Computers had to be the tools of *somebody*, and all he knew for certain was that it definitely wasn't him.” — Neil Gaiman & Terry Pratchett, Good Omens
__deets__
User
Beiträge: 12103
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wahrscheinlich kann man da eine Menge mit numpy und Co verschnellern, aber fuer eine naive Implementierung wuerde ich mir zwei Sachen anschauen:

- zip zum kombinieren der zwei Listen zu einer Liste von Tupeln.
- das "key"-Argument an sorted, dem du eine Funktion mitgeben kannst, die einen Abstand nach den klassischen euklidischen Regeln fuer einen festen Punkt und den gerade betrachteten bestimmt. So erhaelst du fuer einen gegebenen Punkt p eine Liste von Punkten, die nach Abstand aufsteigend sortiert sind. Der erste ist natuerlich der Punkt selbst.
Antworten