[Python][Numpy]unique找出陣列中相同的數值

更新於 發佈於 閱讀時間約 4 分鐘

np.unique 是 NumPy 庫中的一個函數,用於找出陣列中的相同的數值。這個函數可以單純過濾只取唯一值出來,也可以選擇性地返回這些唯一值在原始陣列中的中的索引和計數。


函式

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

參數

  • ar: 輸入數組。可以是任何形狀的陣列
  • return_index: 如果設置為 True,將返回唯一值在原始陣列中的索引。
  • return_inverse: 如果設置為 True,將返回原始數組重構為唯一值陣列的索引。
  • return_counts: 如果設置為 True,將返回唯一值的計數。
  • axis: 如果設置,則沿指定軸查找唯一值。

返回值

  • unique: 唯一值的陣列,按照排序順序返回。
  • unique_indices: (可選)唯一值在原始數組中的第一個出現索引。
  • unique_inverse: (可選)用於重構原始數組的索引。
  • unique_counts: (可選)唯一值的計數。

使用範例

單純使用 找出唯一值

import numpy as np

# 1D
a = np.unique([1, 1, 2, 2, 3, 3])
print(a) # [1 2 3]

# 2D
b = np.array([[1, 0, 0], [1, 0, 0], [2, 3, 4]])
b_res = np.unique(b, axis=0)
print(b_res)
#[[1 0 0]
# [2 3 4]]

取出唯一值的索引

返回出兩個陣列,第一個u包含的是唯一值,第二個indices包含的是這些唯一值的索引。

import numpy as np

a = np.array(['a', 'b', 'b', 'c', 'a'])
u, indices = np.unique(a, return_index=True)

print(u) #['a' 'b' 'c']
print(indices) #[0 1 3]
print(a[indices]) #['a' 'b' 'c']

重構索引數組

import numpy as np

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

分步解釋

  1. 原始數組 a:
    a = np.array([1, 2, 6, 4, 2, 3, 2])
    • 原始數組 a 包含了以下元素: [1, 2, 6, 4, 2, 3, 2]
  2. 調用 np.unique 並返回唯一值和重構索引:
    u, indices = np.unique(a, return_inverse=True)
    • u 是 a 中的唯一值,並且是排序後的結果。
    • indices 是一個數組,它包含了 a 中每個元素在 u 中的位置索引。
  3. 唯一值數組 u:
    print(u)  # [1 2 3 4 6]
    • u 包含了 a 中的唯一值,並且是排序後的結果: [1, 2, 3, 4, 6]
  4. 重構索引數組 indices:
    print(indices)  # [0 1 4 3 1 2 1]
    • indices 包含了 a 中每個元素在 u 中的位置索引。1 在 u 中的位置是 02 在 u 中的位置是 16 在 u 中的位置是 44 在 u 中的位置是 32 在 u 中的位置是 13 在 u 中的位置是 22 在 u 中的位置是 1
  5. 重構原始數組 a:
    print(u[indices])  # [1 2 6 4 2 3 2]
    • 使用 u 和 indices 可以重構原始數組 a。
    • u[indices] 會將 indices 中的每個索引替換為 u 中相應的位置的值,從而得到原始數組 a。

計算唯一值出現的次數

返回出兩個陣列,第一個values包含的是唯一值,第二個counts包含的是這些唯一值出現的次數。

import numpy as np

a = np.array([1, 2, 6, 4, 2, 3, 2])
values, counts = np.unique(a, return_counts=True)
print(values) #[1 2 3 4 6]
print(counts) #[1 3 1 1 1]


參考文獻




avatar-img
128會員
215內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
螃蟹_crab的沙龍 的其他內容
在開發上,常常需要分析每一個函式處理時間,看是不是哪邊可以優化一下,把常用的功能包裝成裝飾器來做使用。 CT裝飾器
直觀理解 導數:考慮的是單一變數的函數,描述的是函數在某點的斜率或變化率。 偏導數:考慮的是多變數函數,描述的是函數在某個變數變化時的變化率,其他變數保持不變。  (針對各維度的調整 或者稱變化 你要調多少) 應用 導數:在物理學中應用廣泛,例如描述速度和加速度。 偏導數:在多變量分析、優
呈上次使用logging來撰寫日誌,利用類別包裝的方式,可實現多個日誌紀錄器,但發現這樣就失去它原先,可以回傳是誰呼叫他並記錄行數的功能。 [Python]使用logging創建兩個以上的日誌紀錄 若開啟函式名稱、行數及訊息的功能,就會像這樣,幾乎都是記錄到,我定義中類別的函式
NumPy(Numeric Python)是Python中用於科學計算的核心庫之一。它提供了高性能的多維陣列對象(即ndarray)以及用於處理這些陣列的各種函數和工具。 在NumPy中,有幾個常用的指令可以用來創建陣列
多型性(polymorphism)是物件導向中的一個重要概念,它指的是同一個方法或函式在不同的物件類別中可以有不同的行為。在 Python 中,多型性通常是通過繼承和方法重寫(method overriding)來實現的。 主要是為了不同資料類型的實體提供統一的介面,我們藉由下面的程式範例來多理解
logging 是 Python 中用於記錄程式運行時信息的模組,它可以幫助你在開發過程中更好地管理和追蹤程式的執行狀態和錯誤信息。 本文較著重使用兩種不同的方法來創建日誌紀錄。 其他有關logging的教學,我推薦以下文章,他介紹蠻詳細的,我就不多贅述了。
在開發上,常常需要分析每一個函式處理時間,看是不是哪邊可以優化一下,把常用的功能包裝成裝飾器來做使用。 CT裝飾器
直觀理解 導數:考慮的是單一變數的函數,描述的是函數在某點的斜率或變化率。 偏導數:考慮的是多變數函數,描述的是函數在某個變數變化時的變化率,其他變數保持不變。  (針對各維度的調整 或者稱變化 你要調多少) 應用 導數:在物理學中應用廣泛,例如描述速度和加速度。 偏導數:在多變量分析、優
呈上次使用logging來撰寫日誌,利用類別包裝的方式,可實現多個日誌紀錄器,但發現這樣就失去它原先,可以回傳是誰呼叫他並記錄行數的功能。 [Python]使用logging創建兩個以上的日誌紀錄 若開啟函式名稱、行數及訊息的功能,就會像這樣,幾乎都是記錄到,我定義中類別的函式
NumPy(Numeric Python)是Python中用於科學計算的核心庫之一。它提供了高性能的多維陣列對象(即ndarray)以及用於處理這些陣列的各種函數和工具。 在NumPy中,有幾個常用的指令可以用來創建陣列
多型性(polymorphism)是物件導向中的一個重要概念,它指的是同一個方法或函式在不同的物件類別中可以有不同的行為。在 Python 中,多型性通常是通過繼承和方法重寫(method overriding)來實現的。 主要是為了不同資料類型的實體提供統一的介面,我們藉由下面的程式範例來多理解
logging 是 Python 中用於記錄程式運行時信息的模組,它可以幫助你在開發過程中更好地管理和追蹤程式的執行狀態和錯誤信息。 本文較著重使用兩種不同的方法來創建日誌紀錄。 其他有關logging的教學,我推薦以下文章,他介紹蠻詳細的,我就不多贅述了。
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
NumPy 是 Python 語言的一個擴充程式庫,支援高階大規模的多維陣列與矩陣運算的數學函式函式庫。 NumPy 2.0.0 是自 2006 年以來的第一個主要發行版本,此重要版本標誌著 NumPy 發展歷程中的一項重要里程碑,為使用者提供了豐富的增強功能和改進,並為未來的功能開發奠定了基礎。
前言 對標題上的這兩個項目有疑惑,不知道它們返回的資料的不同;查找資料後記錄下來,讓自己以後可以回來翻閱。 正文 numpy.ndarray.flatten:返回攤平的一維array,可參考NumPy: numpy.ndarray.flatten() function,有示意圖 te
Thumbnail
題目敘述 Minimum Increment to Make Array Unique 給定一個整數陣列,每回合可以任意挑一個數字進行+1的加法操作。 請問最少需要多少次的+1加法操作,才能讓每個數字都相異?
Thumbnail
給定一個字串陣列,請把它們所共有的字元伴隨著出現次數輸出。這篇文章介紹如何使用字典統計出現次數,和字典取交集的方法來解決此問題。並提供了複雜度分析和關鍵知識點。
Thumbnail
接續著上次提到的 COUNT、COUNTA,我們再稍稍延伸一點,把 COUNT 函式的家族補完,介紹最後的兩名成員:COUNTUNIQUE 跟 COUNTBLANK。
Thumbnail
題目敘述 題目會給定我們兩個整數陣列作為輸入nums1, nums2,要求我們找出兩個陣列的差異值。 找出在nums1但是不在nums2的元素,以陣列的形式放在answer[0]輸出。 找出在nums2但是不在nums1的元素,以陣列的形式放在answer[1]輸出。 題目的原文敘述
Thumbnail
題目敘述 題目會給定一個整數陣列arr,要求我們判斷是否每個元素的出現次數都不同? 題目的原文敘述 測試範例 Example 1: Input: arr = [1,2,2,1,1,3] Output: true Explanation: The value 1 has 3 occurre
Thumbnail
Python 提供了一個功能豐富的標準函式庫,其中 random 專門用於生成隨機數。本文將介紹 random 的基本介紹,以及函式應用。
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
NumPy 是 Python 語言的一個擴充程式庫,支援高階大規模的多維陣列與矩陣運算的數學函式函式庫。 NumPy 2.0.0 是自 2006 年以來的第一個主要發行版本,此重要版本標誌著 NumPy 發展歷程中的一項重要里程碑,為使用者提供了豐富的增強功能和改進,並為未來的功能開發奠定了基礎。
前言 對標題上的這兩個項目有疑惑,不知道它們返回的資料的不同;查找資料後記錄下來,讓自己以後可以回來翻閱。 正文 numpy.ndarray.flatten:返回攤平的一維array,可參考NumPy: numpy.ndarray.flatten() function,有示意圖 te
Thumbnail
題目敘述 Minimum Increment to Make Array Unique 給定一個整數陣列,每回合可以任意挑一個數字進行+1的加法操作。 請問最少需要多少次的+1加法操作,才能讓每個數字都相異?
Thumbnail
給定一個字串陣列,請把它們所共有的字元伴隨著出現次數輸出。這篇文章介紹如何使用字典統計出現次數,和字典取交集的方法來解決此問題。並提供了複雜度分析和關鍵知識點。
Thumbnail
接續著上次提到的 COUNT、COUNTA,我們再稍稍延伸一點,把 COUNT 函式的家族補完,介紹最後的兩名成員:COUNTUNIQUE 跟 COUNTBLANK。
Thumbnail
題目敘述 題目會給定我們兩個整數陣列作為輸入nums1, nums2,要求我們找出兩個陣列的差異值。 找出在nums1但是不在nums2的元素,以陣列的形式放在answer[0]輸出。 找出在nums2但是不在nums1的元素,以陣列的形式放在answer[1]輸出。 題目的原文敘述
Thumbnail
題目敘述 題目會給定一個整數陣列arr,要求我們判斷是否每個元素的出現次數都不同? 題目的原文敘述 測試範例 Example 1: Input: arr = [1,2,2,1,1,3] Output: true Explanation: The value 1 has 3 occurre
Thumbnail
Python 提供了一個功能豐富的標準函式庫,其中 random 專門用於生成隨機數。本文將介紹 random 的基本介紹,以及函式應用。