numpy array dtype = S32 zu integer?

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
dennisvomdach
User
Beiträge: 4
Registriert: Montag 1. April 2019, 17:47

Hallo,

ich habe in etwa 15 000 Datensätze in einem Array welches als .npy hinterlegt ist.
In diesem Array wurden zu Laufzeit auch Zeilenumbrüche usw gespeichert, somit ist es für mich unmöglich
die Zahlen aus dem Array zu selektieren (zu integer etc) weil ich damit weiter arbeiten muss.

Auszug aus dem Array:

Out[78]:
array([b'21\r\n', b'21\r\n', b'21\r\n', ..., b'22\r\n', b'22\r\n',
b'22\r\n'],
dtype='|S32')


Jemand eine Idee wie ich nur an die Zahlen heran komme um diese dann mathematisch weiterverarbeiten kann?

Nachtrag:

habe es so versucht:
1 for i in array:
----> 2 print(int(i))
3
4

ValueError: invalid literal for int() with base 10: b'67\r19\r\n'


Scheinbar hängt da irgendwo ein Zahlenwert zusätzlich fest und zwar die 67... das müsste ich reparieren bzw. diesen "Kaputten" Datensatz löschen.. habe aber keine Idee..
Danke und lg
Benutzeravatar
__blackjack__
User
Beiträge: 13077
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@dennisvomdach: Wenn Du alles was sich nicht als `int()` umwandeln lässt, entfernen willst, dann musst Du halt die Ausnahmen behandeln. Ist das denn okay einfach so Werte weg zu lassen? Und wer hat die Daten in diesem kaputten Format gespeichert? Das ist ja offensichtlich nichts was man so in einem Numpy-Array speichern/verarbeiten würde, weil das gar keinen Vorteil bringt. Und wenn da 32 Bytes pro Eintrag reserviert sind, gibt es offensichtlich mindestens einen Eintrag der auch tatsächlich so lang ist. Was verwirfst Du denn da an Daten wenn Du das raus filterst?

Code: Alles auswählen

values = list()
for string in array:
    try:
        values.append(int(string))
    except ValueError:
        pass  # Ignore invalid strings.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Wer auch immer diese Daten als .npy gespeichert hat, soll dir mal erklären wie er das gemacht hat.
Ein mit Numpy.ndarray.save gespeichertes Array kann man mit ndarray.load wieder einlesen.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Antworten