2016-03-01 103 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)调用独特