np.unique() 和 df.nunique() 獲取唯一值


一、np.unique() 

查找數組的唯一元素。

返回數組的排序后的唯一元素。除獨特元素外,還有三個可選輸出:

  • 輸入數組的索引,這些索引給出唯一值

  • 重建輸入數組的唯一數組的索引

  • 輸入數組中每個唯一值出現的次數

numpy.unique(arreturn_index = False,return_inverse = False,return_counts = False,axis = None )

參數

  • ar: array_like,輸入數組。除非指定了軸,否則如果它不是一維的,它將被展平
  • return_index: bool,可選,如果為True,則還返回ar的索引(沿着指定的軸,如果提供的話,或者在展平的數組中),這將導致唯一的數組。返回是唯一值和對應的值首次出現的索引
  • return_inverse: bool,可選,如果為True,則還返回可用於重建ar的唯一數組的索引(對於指定的軸(如果提供))。返回的是唯一值和原數據排序后的索引值(如,原數據[1, 2, 6, 4, 2, 3, 2],現在[0, 1, 4, 3, 1, 2, 1])
  • return_counts :bool,可選,如果為True,則還返回每個唯一項出現在ar中的次數。1.9.0版中的新功能。
  • axis:int或無,可選,要運行的軸。如果為None,則ar將被展平。如果為整數,則由給定軸索引的子數組將被展平並視為具有給定軸尺寸的一維數組的元素,有關更多詳細信息,請參見注釋。如果使用軸 kwarg,則不支持對象數組或包含對象的結構化數組。默認為無。1.13.0版中的新功能。(0是選擇唯一行,1是選擇唯一列,相當是把行或者列作為一個整體)

返回

  • unique:ndarray,排序后的唯一值。
  • unique_indices: ndarray,可選,原始數組中唯一值的首次出現的索引。僅在return_index為True時提供。
  • unique_inverse: ndarray,可選,從唯一數組重建原始數組的索引。僅在return_inverse為True時提供。
  • unique_counts: ndarray,可選,每個唯一值出現在原始數組中的次數。僅在return_counts為True時提供。1.9.0版中的新功能。

例子

#一維
np.unique([1, 1, 2, 2, 3, 3])
#array([1, 2, 3])

#非一維
a = np.array([[1, 1], [2, 3]])
np.unique(a)
#array([1, 2, 3])

返回二維數組的唯一行

a = np.array([[1, 0, 0], [1, 0, 0], [2, 3, 4]])
np.unique(a, axis=0) #array([[1, 0, 0], [2, 3, 4]])

返回給出唯一值的原始數組的索引

a = np.array(['a', 'b', 'b', 'c', 'a'])
u, indices = np.unique(a, return_index=True)
u
#array(['a', 'b', 'c'], dtype='<U1')
indices
#array([0, 1, 3])
a[indices]
#array(['a', 'b', 'c'], dtype='<U1')

從唯一值重建輸入數組

a = np.array([1, 2, 6, 4, 2, 3, 2])
u, indices = np.unique(a, return_inverse=True)
u
#array([1, 2, 3, 4, 6])
indices
#array([0, 1, 4, 3, 1, 2, 1])
u[indices]
#array([1, 2, 6, 4, 2, 3, 2])

 

二、df.nunique()

計算行或者列的不同觀察值。返回行或者列的唯一值。可以忽略NaN值

DataFrame.nunique(axis=0, dropna=True)

參數

axis:{0 or ‘index’, 1 or ‘columns’}, default 0,0是計算每個特征有多少個唯一值,1是計算每行有多少個唯一值

dropna:bool, default True,是否包括空值

例子

df = pd.DataFrame({'A': [1, 2, 3], 'B': [1, 1, 1]})
df.nunique() '''
A    3
B    1
dtype: int64
'''
#########################
df.nunique(axis=1) '''
0    1
1    2
2    2
dtype: int64
'''

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM