📅  最后修改于: 2020-10-27 08:06:16             🧑  作者: Mango
Python的numpy模块提供了用于在numpy数组中查找唯一元素的函数。 numpy.unique()函数查找数组的唯一元素,并将这些唯一元素作为排序后的数组返回。除了独特的元素外,还有一些可选输出,如下所示:
numpy.unique(a, return_index=False, return_inverse=False, return_counts=False, axis=None)
这些是numpy.mean()函数中的以下参数:
一个:array_like
此参数定义包含需要其唯一值的元素的源数组。如果不是一维数组,则该数组将被展平。
Return_index:布尔值(可选)
如果将此参数设置为True,则该函数将返回输入数组的索引(沿着指定的轴(如果提供的话)或在展平的数组中),从而得到唯一的数组。
return_inverse:bool(可选)
如果将此参数设置为True,则该函数还将返回输入数组的索引(沿着指定的轴(如果提供的话)或在展平的数组中),该索引可用于重建输入数组。
返回计数:bool(可选)
如果将此参数设置为True,则该函数将返回每个唯一项出现在输入数组’a’中的次数。
轴:int或无(可选)
该参数定义了要运行的轴。如果未设置此参数,则数组“ a”将被展平。如果此参数是整数,则由给定轴索引的子数组将被展平并视为具有给定轴尺寸的一维数组的元素。如果使用轴“ kwarg”,则不支持结构化数组或包含对象的对象数组。
此函数返回四种类型的输出,如下所示:
唯一的:ndarray
在此输出中,将显示一个包含已排序的唯一值的ndarray。
unique_indices:ndarray(可选)
在此输出中,将显示一个ndarray,其中包含原始数组中唯一值的首次出现的索引。仅当return_index为True时才提供此输出。
unique_inverse:ndarray(可选)
在此输出中,将显示一个ndarray,其中包含从唯一数组重构原始数组的索引。仅当return_inverse为True时才提供此输出。
unique_counts:ndarray(可选)
在此输出中,将显示一个ndarray,其中包含每个唯一值出现在原始数组中的次数。仅当return_counts为True时才提供此输出。
import numpy as np
a=np.unique([1,2,3,4,3,6,2,4])
a
输出:
array([1, 2, 3, 4, 6])
在上面的代码中
在输出中,显示了一个ndarray,其中包含唯一元素。
a=np.array([[1,2,2,3,9],[1,4,3,5,8]])
a
b=np.unique(a)
b
输出:
array([[1, 2, 2, 3, 9],
[1, 4, 3, 5, 8]])
array([1, 2, 3, 4, 5, 8, 9])
import numpy as np
a = np.array([[1, 1, 0], [1, 1, 0], [2, 3, 4],[5, 9, 8],[2, 3, 4]])
a
b=np.unique(a, axis=0)
b
输出:
array([[1, 1, 0],
[1, 1, 0],
[2, 3, 4],
[5, 9, 8],
[2, 3, 4]])
array([[1, 1, 0],
[2, 3, 4],
[5, 9, 8]])
在上面的代码中
在输出中,显示了一个ndarray,其中包含源数组’a’的唯一行。
import numpy as np
a = np.array([[1, 1, 0], [1, 1, 0], [2, 2, 4],[5, 5, 8],[2, 2, 4]])
a
b=np.unique(a, axis=1)
b
输出:
array([[1, 1, 0],
[1, 1, 0],
[2, 2, 4],
[5, 5, 8],
[2, 2, 4]])
array([[0, 1],
[0, 1],
[4, 2],
[8, 5],
[4, 2]])
注意:当我们将axis设置为1时,此函数将返回源数组中的唯一列。
import numpy as np
a = np.array(['d', 'b', 'b', 'z', 'a'])
result, indices=np.unique(a,return_index=True)
result
indices
a[indices]
输出:
array(['a', 'b', 'd', 'z'], dtype='|S1')
array([4, 1, 0, 3], dtype=int64)
array(['a', 'b', 'd', 'z'], dtype='|S1')
在上面的代码中
在输出中,显示了一个ndarray,其中包含原始数组的索引,这些索引给出了唯一的值。
我们可以通过以下方式从唯一值重建输入数组:
import numpy as np
a = np.array([1, 2, 6, 4, 5, 3, 2])
result, indices=np.unique(a,return_inverse=True)
result
indices
a[indices]
输出:
array([1, 2, 3, 4, 5, 6])
array([0, 1, 5, 3, 4, 2, 1], dtype=int64)
array([1, 2, 3, 4, 5, 6, 2])