Aus dem Kurs: Julia für Data Science

Indexing verstehen

Jetzt in dieser Lektion besprechen wir das Indexing-Konzept von Arrays in Julia. Wir haben schon grundlegend gelernt, wie wir solche Arrays erstellen können und damit arbeiten können. Und jetzt geht es um die spannende Frage: Wenn wir ein Array haben wie das Array R, was ich jetzt hier mal erstelle über die Rand-Funktion mit neuen, zufällig generierten Daten, wie kann ich jetzt hier auf einzelne Elemente zugreifen? Also, wir sehen ja hier, dass jetzt zufällige Elemente, also zufällige Zahlenwerte im Wertebereich zwischen 0 und 1 generiert werden mit Nachkommastellen. Und jetzt stellt sich die Frage wie kann ich jetzt hier beispielsweise auf das erste Element zurückgreifen? Oder wie kann ich das letzte oder vorletzte Element mir hier entsprechend holen? Und dazu können wir mal kurz reinspringen in die Dokumentation von der offiziellen Julia-Seite, wo wir hier sehen, wie wir mit multidimensionalen Arrays arbeiten können. Dabei gibt es eben zahlreiche Funktionen und es gibt dann auch eben das Indexing-Konzept, was wir hier nochmal entsprechend sehen. Und dabei ist es so, dass wir auch wieder über Eckklammern arbeiten können und dann eben den Zugriff erhalten auf einzelne Elemente von einem Array. Und das schauen wir uns jetzt einfach mal an. Also wir wollen jetzt hier das erste Element von der Datenstruktur R uns beispielsweise hier greifen. Das wäre möglich über Eckklammern und hier schreibe ich jetzt einfach mal die 1 rein und darüber kann ich mir hier das erste Element entsprechend holen. Das hat also funktioniert. Ich sehe hier die 0,65. Was ich dann auch machen könnte, wäre hier über einen Doppelpunkt zu arbeiten, denn hier kann ich dann mehr angeben. Also quasi von bis, das heißt, Doppelpunkt mit keiner Zahl davor und keiner Zahl danach würde einfach bedeuten, ich hole mir einfach alle Elemente entsprechend. Dann kann ich auch schreiben hier 1 bis 2. Wichtig ist hier: der Index in Julia, ganz, ganz wichtig, beginnt nicht bei 0 wie in anderen Programmiersprachen wie in Python beispielsweise und in Java, sondern das Ganze ist in Julia anders. In R ist es übrigens genau wie bei Julia, dass der Index eben bei 1 startet und nicht bei 0. Das heißt, die erste Zahl repräsentiert dann exakt auch den Index 1, sehen wir auch hier. Und wenn ich dann sage, vom Index 1 starten bis zur Zahl 2, also bis zum zweiten Index, bekomme ich dann genau diese beiden Elemente angezeigt. Und so könnte ich halt weiterfahren, könnte hier sagen, die ersten vier beispielsweise und dann bekomme ich halt die ersten vier angezeigt. Wie bekommen wir jetzt beispielsweise das letzte Element? Also das wäre jetzt hier noch in die Rubrik erstes und zweites Element. Kann ich mir hier mal entsprechend reinkopieren. Wie bekomme ich das letzte Element heraus? Das letzte Element bekomme ich hier ganz einfach über einen Umweg, und zwar über die length-Funktion von R kann ich ermitteln, wie viele Elemente grundlegend daran liegen, das sind eben 9. Und so könnte ich jetzt hier das beispielsweise in die Variable L schreiben, können jetzt hier sagen R von L. Das heißt, das L entspricht einfach der 9 und so kann ich dann sagen das letzte Element an der Indexposition 9. Oder ich könnte auch schreiben R, dann diese Eckklammern und dann hier die Länge von R wiederum. Dann bekomme ich auch die 0,75 oder was es auch gibt: R, Eckklammern und dann könnte ich hier schreiben einfach end. Also es gibt hier auch die End-Funktion, die dann einfach automatisch das Ende ermittelt, also den letzten Datenpunkt so gesehen, also das letzte Element in der Datenstruktur. Und das wäre dann hier auch wieder die 0,75. Wie bekommen wir das vorletzte Element? Das geht jetzt hier über R, dann hier die Länge von R, und zwar –1 und dann bekomme ich hier die 0,54. Das wäre dann genau das vorletzte Element. Das wäre eine Schreibweise. Alternative Schreibweise wäre, wenn ich ja sowieso die L-Variable habe. L –1 könnte ich auch schreiben oder ich kann auch schreiben R Eckklammern end minus 1. Kommen wir mal zu weiteren Beispielen, wie wir grundlegend auch mal neue Arrays anlegen können. Da gibt es dann beispielsweise auch die Zeros-Funktion. Mal ein Fragezeichen davor. Was macht diese Zeros-Funktion? Diese Zeros-Funktion kann einen Array erstellen, und zwar einfach nur mit Nullwerten. Das heißt, wir können dann sowohl eine Matrix als auch einen Vektor anlegen und den Datentyp definieren. Also ich könnte jetzt hier sagen, was wäre der Datentyp beispielsweise ein Integer, und zwar 32. Das wäre wieder der Speicherplatz, und zwar bspw. ein Vektor mit 3 × der 0. Oder ich könnte auch sagen zeros Integer 64, haben wir zwar immer noch eine Ganzzahl, aber die Speicherung wäre eine andere und dann eben 3 und 3. So bekomme ich dann eine Matrix mit der Dimension 3 × 3. Und auch hier könnte ich natürlich wieder zurückgreifen, und zwar auf ausgewählte Elemente. Ich kann hier dann einfach sagen, das erste Element, das wäre dann einfach die 0. Natürlich wäre dann eben so auch das zweite Element eine 0. Einfach um das Ganze nochmal zu zeigen. Wie funktioniert das Ganze jetzt also bei Matrizen? Ich kann jetzt mal eine Matrix anlegen, und zwar hier mit diesen Eckklammern. Sagen wir jetzt hier einfach mal 100, 200, 300. Und dann hier nochmal einen Vektor reinlegen 400 500 600. Das wäre jetzt hier ein 2-Element-Vektor. Will sagen, einfach eine Matrix. Und bei einer Matrix funktioniert das Ganze so, dass ich hier den Zugriff ebenfalls erhalte über die Eckklammern, und zwar auf die entsprechenden Zeilen und Spalten und so kann ich dann sagen, welches Element ich mir entsprechend holen möchte. Und das kann ich dann machen auch über Doppelpunkt, Doppelpunkt und ein Komma dazwischen. Also alle Zeilen und alle Spalten. Dann bekomme ich alle Einträge angezeigt. Oder ich könnte nur sagen, die erste Zeile geht auch, und zwar über Eckklammern, sage dann einfach 1. Dann bekomme ich jetzt hier die erste Zeile entsprechend angegeben, kann es allerdings auch so schreiben M und dann eben 1 und dann eben Komma Doppelpunkt davon entsprechend alles. Dann bekomme ich es in der Struktur und ich kann auch die zweite Zeile holen M und dann eben 2. Das wäre eben die zweite Zeile und ich kann sagen M 2 und dann eben Doppelpunkt. Dann bekomme ich auch noch mal die zweite Zeile angezeigt. Du siehst also, so funktioniert das Konzept des Indexings, also wie ich auf ausgewählte Elemente von Arrays zugreifen kann.

Inhalt