ich habe vor ein paar Wochen angefangen Python zu lernen. Komme aber nun nicht mehr weiter.
Ich versuche ein 3-dimensionales Array zu sortieren. Über 2d-Arrays gibt es einiges im Internet, aber die Übertragung auf 3d-Arrays gelingt mir nicht. Die Python- und Numpy-Referencen bringen mich auch nicht weiter.
Ich möchte gern die stündlichen Temperaturen über 100 Tage für jeden einzelnen Tag sortieren. Dazu habe ich die Daten in ein Array mit der Dimensionierung temperatur(100, 2, 25) und dem Datentyp Integer32 gepackt. Für den 1. Tage sieht das Array wie folgt aus:
[20180101, 20180101] Zeile 0 enthält zweimal das Datum 1.1.2018
[1, 18] Zeile 1 enthält die Stunde 1 und die Temperatur 18 Grad
[2, 18] Zeile 2 enthält die Stunde 2 und die Temperatur 18 Grad
[3, 19] Zeile 3 enthält die Stunde 3 und die Temperatur 19 Grad usw.
....
[12, 23]
[13, 24]
....
[22, 19]
[23, 18]
[24, 17]
Nun möchte ich für jeden Tag die Temperaturen auf- bzw. absteigend sortieren und die dazugehörige Stunde mit sortieren, damit das Ergebnis so aussieht:
[20180101, 20180101]
[13, 24]
[12, 23]
[22, 19]
....
[23, 18]
[24, 17]
Ich hatte die Hoffnung, dass es analog dem Sortieren von 2-dimensionalen Arrays funktionieren würde, nur klappt es leider nicht.
Code: Alles auswählen
import numpy as np
# 3 Tage, 2 Spalten für 24 Stunden und 24 Temperaturwerte
t = np.array([[[20190101, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24],
[20190101, 18, 18, 19, 19, 17, 16, 18, 17, 19, 20, 20, 20, 21, 22, 20, 19, 20, 20, 21, 22, 23, 22, 22,
21]],
[[20190102, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24],
[20190102, 18, 18, 19, 19, 17, 16, 18, 17, 19, 20, 20, 20, 21, 22, 20, 19, 20, 20, 21, 22, 23, 22, 22,
21]],
[[20190103, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24],
[20190103, 18, 18, 19, 19, 17, 16, 18, 17, 19, 20, 20, 20, 21, 22, 20, 19, 20, 20, 21, 22, 23, 22, 22,
21]]], dtype=np.int32)
print(t)
print("Anzahl Dimensionen:", t.ndim)
x=input("weiter?")
for i in range(0, 3):
t = t[np.argsort(t[i, 1, 1:24])]
print("--------sortiert-------------")
print(t)
Traceback (most recent call last):
File "E:/Dokumente/PyCharmProjects/Lz_01/Test_Sort.py", line 27, in <module>
t = t[np.argsort(t[i, 1, 1:24])]
IndexError: index 5 is out of bounds for axis 0 with size 3
Process finished with exit code 1
Kann mir bitte jemand helfen?
Vielleicht kann mir jemand auch Tipps geben wo das Sortieren möglichst einfach und verständlich erklärt wird. 1- und 2-dimensionale Arrays sind kein Problem, aber sobald es 3- und mehr-dimensional wird es schwierig.
Vielen Dank im voraus.
Dieter