Programowo dodaj nazwy kolumn do numpy ndarray
Próbuję dodać nazwy kolumn do numpy ndarray, a następnie wybrać kolumny według ich nazw. Ale to nie działa. Nie mogę powiedzieć, czy problem występuje, gdy dodaję nazwiska, czy później, gdy próbuję do nich zadzwonić.
Oto mój kod.
data = np.genfromtxt(csv_file, delimiter=',', dtype=np.float, skip_header=1)
#Add headers
csv_names = [ s.strip('"') for s in file(csv_file,'r').readline().strip().split(',')]
data = data.astype(np.dtype( [(n, 'float64') for n in csv_names] ))
Diagnostyka oparta na wymiarach odpowiada temu, czego oczekuję:
print len(csv_names)
>> 108
print data.shape
>> (1652, 108)
„print data.dtype.names” zwraca również oczekiwane wyjście.
Ale kiedy zaczynam nazywać kolumny według nazw pól, zdarzają się przerażające rzeczy. „Kolumna” jest nadal tablicą ze 108 kolumnami…
print data["EDUC"].shape
>> (1652, 108)
... i wydaje się, że zawiera więcej brakujących wartości niż w zestawie danych.
print np.sum(np.isnan(data["EDUC"]))
>> 27976
Jakiś pomysł, co się tutaj dzieje? Dodawanie nagłówków powinno być banalną operacją, ale walczę z tym błędem od wielu godzin. Wsparcie!