2016-03-01 154 views
3

我有一個numpy數組。當我用這種方式打印時,numpy.unique不會給出預期的輸出

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

我得到6278.但是,當我打印的最小和與numpy.amax和numpy.amin同一陣列的最大INT值;

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

我得到286和0.在0和286之間是否可以有6278個唯一值?當然不是!

我該如何獲得唯一值的數量?

感謝,

回答

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)調用獨特