一、np.unique(image)函數
np.unique(image) 函數在 NumPy 中用來返回唯一的元素數組,同樣適用於圖像處理。
在處理圖像時,我們可以使用該函數返回圖像中的顏色通道。例如,以下代碼將返回 RGB 圖像的所有顏色通道:
import numpy as np
import cv2
# 讀取 RGB 圖像
img = cv2.imread('image.png')
# 獲取唯一的元素數組,返回 RGB 圖像的所有顏色通道
unique_pixels = np.unique(img.reshape(-1, img.shape[2]), axis=0)
將原始圖像重新形狀為一維向量,列數與顏色通道數相同。然後將其傳遞給 np.unique(),以便計算所有不同的元素。我們使用 axis=0 參數來保留所得到的唯一值的顏色通道。
二、np.unique函數處理圖像
在處理圖像時, np.unique() 函數還可以用於獲取圖像的顏色通道,並且可以幫助我們實現一些簡單的圖像處理方法。例如,以下代碼將返回顏色值最高的顏色通道:
# 讀取 RGB 圖像
img = cv2.imread('image.png')
# 獲取顏色通道
channel = np.argmax(np.bincount(img[:,:,0].ravel()))
# 輸出結果
print('The color with the highest value is:', channel)
首先,我們傳遞藍色顏色通道給 np.bincount() 函數來計算每個顏色值的出現次數。然後使用 np.argmax() 函數獲取出現次數最高的顏色值的索引。最後,我們得到該顏色通道的索引。
三、np.unique提速
在處理大型數組時, np.unique() 函數可能會變得很慢。為了避免這種情況,我們可以使用 np.searchsorted() 函數。
以下代碼演示了如何使用 np.searchsorted() 函數來加速 np.unique() 函數:
# 生成虛擬數據數組 arr = np.random.randint(low=0, high=1000000, size=100000) # 用 np.unique() 計算唯一值的速度,並輸出所使用的時間 %timeit np.unique(arr) # 用 np.searchsorted() 和 np.sort() 來計算唯一值的速度,並輸出所使用的時間 %timeit np.sort(arr); np.concatenate(([arr[0]], arr[1:][np.diff(arr) != 0])) # 比較結果 %timeit np.unique(arr) == np.sort(arr); np.concatenate(([arr[0]], arr[1:][np.diff(arr) != 0]))
從輸出結果可以看出,使用 np.searchsorted() 可以大大提高 np.unique() 函數的計算速度。
四、np.unique(arr)用法
np.unique(arr) 函數可以用來獲取數組 arr 中的唯一值。以下代碼展示了這個情況:
# 生成虛擬數據數組
arr = np.array([1, 2, 3, 4, 5, 1, 2, 3, 4, 5])
# 獲取 arr 中的唯一元素
unique_arr = np.unique(arr)
# 輸出結果
print('Unique elements in arr are:', unique_arr)
五、np.unique函數參數
我們可以使用一些可選參數自定義 np.unique() 函數的行為。以下是一些常用參數:
1. return_index
如果 return_index 為 True,則返回唯一值的索引,而非唯一值本身。
# 生成虛擬數據數組
arr = np.array([1, 2, 3, 4, 5, 1, 2, 3, 4, 5])
# 獲取 arr 中唯一元素的索引
unique_indices = np.unique(arr, return_index=True)[1]
# 輸出結果
print('Indexes of unique elements:', unique_indices)
2. return_inverse
如果 return_inverse 為 True,則將數組元素替換為其在唯一元素數組中的位置。
# 生成虛擬數據數組
arr = np.array([1, 2, 3, 4, 5, 1, 2, 3, 4, 5])
# 獲取 arr 中唯一元素和索引
unique_arr, inverse_indices = np.unique(arr, return_inverse=True)
# 將數組元素替換為其在唯一元素數組中的位置
arr_replaced = unique_arr[inverse_indices]
# 輸出結果
print('Original array:', arr)
print('Array with replaced elements:', arr_replaced)
3. return_counts
如果 return_counts 為 True,則返回每個唯一元素的出現次數。
# 生成虛擬數據數組
arr = np.array([1, 2, 3, 4, 5, 1, 2, 3, 4, 5])
# 獲取 arr 中唯一元素和其出現次數
unique_arr, counts = np.unique(arr, return_counts=True)
# 輸出結果
for i in range(len(unique_arr)):
print('Element', unique_arr[i], 'appears', counts[i], 'times in arr')
六、np.unique什麼意思
np.unique() 函數的作用是從數組中獲取唯一值,並按照升序排列。以下代碼展示了這個過程:
# 生成虛擬數據數組
arr = np.array([1, 2, 3, 4, 5, 1, 2, 3, 4, 5])
# 獲取 arr 中的唯一元素
unique_arr = np.unique(arr)
# 輸出結果
print('Unique elements in arr are:', unique_arr)
七、np.unique'()
當我們使用字符串數組時, np.unique() 函數的行為將有所不同。例如,以下代碼將返回字符串數組中每個單獨的字符,而非單詞:
# 生成虛擬字符串數組
arr = np.array(['apple', 'banana', 'cherry'])
# 獲取 arr 中的唯一元素
unique_arr = np.unique(arr)
# 輸出結果
print('Unique elements in arr are:', unique_arr)
八、np.unique(a)
np.unique(a) 函數將返回數組 a 中唯一值的排序版本。以下代碼展示了這個過程:
# 生成虛擬數據數組
a = np.array([1, 2, 3, 5, 3, 2, 1, 4])
# 獲取 a 中的唯一元素
unique_a = np.unique(a)
# 輸出結果
print('Unique elements in a are:', unique_a)
# 獲取 a 中的唯一元素的排序版本
sorted_unique_a = np.sort(unique_a)
# 輸出結果
print('Sorted unique elements in a are:', sorted_unique_a)
在這裡,我們使用 np.sort() 函數來獲得唯一值的排序版本。
原創文章,作者:MUEO,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/144296.html
微信掃一掃
支付寶掃一掃