2016-03-01 2 views
3

У меня есть массив numpy. Когда я печатаю его таким образом;numpy.unique не дает ожидаемого результата

print len(numpy.unique(all_data[:, 3]).astype(int)) 

я получаю 6278. Но когда я печатаю минимальные и максимальные значения ИНТ одного и того же массива с numpy.amax и numpy.amin;

print numpy.amax(numpy.unique(all_data[:, 3]).astype(int)) 
print numpy.amin(numpy.unique(all_data[:, 3]).astype(int)) 

Я получаю 286 и 0. Возможно ли иметь 6278 уникальных значений между 0 и 286? Конечно нет!

Что мне делать, чтобы получить количество уникальных значений?

Спасибо,

ответ

2

Вы должны использовать astype(int) перед вызовом уникальным, а не после.

Это не же (уникальный приложенный к исходному типу данных):

print numpy.amax(numpy.unique(all_data[:, 3]).astype(int)) 
print numpy.amin(numpy.unique(all_data[:, 3]).astype(int)) 

как это (уникальным приложенный к Интсу):

print numpy.amax(numpy.unique(all_data[:, 3].astype(int))) 
print numpy.amin(numpy.unique(all_data[:, 3].astype(int))) 

Примечание: Обратите внимание на то, как в последнем as type применяется до: all_data[:, 3].astype(int) звонок уникально

Смежные вопросы