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]
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]
返回出兩個陣列,第一個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]