Dein Array enthält ja nur Strings. Weil Du eine Liste mit zwei Floats und zwei Strings erzeugst, was schon ziemlich durcheinander ist. Daten konvertiert man erst bei der Ausgabe in Zeichen. In Deinem Fall macht ein Numpy-Array auch nicht wirklich Sinn, benutze das csv-Modul.
Die while-Schleife sollte eine for-Schleife sein und die beiden if-Abfragen zum ersten und letzten Schleifendurchgang schreibst Du am besten vor und hinter die Schleife. Bei zwei return.s wird das zweite nie erreicht. Die Stringrepräsentation von Listen und Arrays sind nur für Debugzwecke da, nicht um sie in irgendwelche Dateien zu schreiben.
Strings sind kein Ersatz für Kommentare. Das `temp_data_sets` ist total zwischen den Funktionsdefinitionen versteckt, sollte im Hauptprogramm (Funktion main) abgefragt werden und als Parameter an temp_read_loop übergeben werden, dann aber schon als Zahl um sie nicht bei jeder Benutzung in eine Zahl umwandeln zu müssen.