numpy.unique给出了非唯一输出?

时间:2016-09-02 23:33:42

标签: python numpy unique

我正在尝试获取numpy数组(3628621元素的长向量)的唯一元素的索引。 但是,我必须做错事,因为当我尝试选择独特的元素时,我仍然会发现重复:

Vector
Out[165]: array([712450, 714390, 718560, ..., 384390, 992041,  94852])

Loc = np.where(np.unique(Vector))       # Find indices of unique elements
Vector_New = Vector[Loc]                # Create new vector with all unique elements
np.where(Vector_New == 173020)          # See how often/where '173020' exists
Out[166]: (array([ 7098, 11581], dtype=int64),)

所以,整数' 173020'在新的向量中仍然存在两次,尽管我期望所有元素都应该是唯一的。新的向量是11594个元素。

感谢您的帮助!

此致 踢门

1 个答案:

答案 0 :(得分:1)

np.unique有几个可以激活的参数,可以为您提供所需的信息。它的主叫签名是:

np.unique(ar, return_index=False, return_inverse=False, return_counts=False)

阅读文档。

In [50]: keys
Out[50]: 
array([1, 3, 5, 2, 0, 7, 4, 7, 7, 2, 7, 5, 5, 3, 6, 2, 3, 5, 5, 5, 6, 9, 6,
       5, 2, 1, 6, 6, 5, 9, 9, 6, 5, 5, 9, 9, 6, 3, 7, 0, 5, 1, 7, 6, 2, 4,
       1, 0, 6, 5, 4, 8, 8, 4, 2, 1, 8, 3, 1, 9, 8, 4, 4, 2, 4, 7, 2, 6, 8,
       6, 5, 2, 4, 9, 1, 5, 3, 1, 5, 6, 2, 2, 8, 4, 0, 4, 9, 0, 8, 1, 5, 3,
       1, 3, 7, 1, 5, 8, 5, 8])
In [51]: np.unique(keys, return_counts=True, return_index=True)
Out[51]: 
(array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),
 array([ 4,  0,  3,  1,  6,  2, 14,  5, 51, 21], dtype=int32),
 array([ 5, 11, 11,  8, 10, 18, 12,  8,  9,  8]))