阅读量

原创教程,严禁转载。引用本文,请署名 Python中文网, http://www.zglg.work


如何获得唯一元素和出现次数

本节介绍np.unique

使用np.unique可以很容易地找到数组中唯一的元素。

例如,如果从这个数组开始:

>>> a = np.array([11, 11, 12, 13, 14, 15, 16, 17, 12, 13, 11, 14, 18, 19, 20])

可以使用np.unique打印数组中的唯一值:

>>> unique_values = np.unique(a)
>>> print(unique_values)
[11 12 13 14 15 16 17 18 19 20]

要获取NumPy数组中唯一值的索引(数组中唯一值的第一个索引位置的数组),只需在np.unique()中传递return_index参数:

>>> unique_values, indices_list = np.unique(a, return_index=True)
>>> print(indices_list)
[ 0  2  3  4  5  6  7 12 13 14]

可以将np.unique()中的return_counts参数与数组一起传递,以获取NumPy数组中唯一值的频率计数。

>>> unique_values, occurrence_count = np.unique(a, return_counts=True)
>>> print(occurrence_count)
[3 2 2 2 1 1 1 1 1 1]

这也适用于二维数组!如果从这个数组开始:

>>> a_2d = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [1, 2, 3, 4]])

您可以通过以下方式找到唯一的值:

>>> unique_values = np.unique(a_2d)
>>> print(unique_values)
[ 1  2  3  4  5  6  7  8  9 10 11 12]

如果未传递axis参数,则二维数组将被展平。

如果要获取唯一的行或列,请确保传递axis参数。若要查找唯一的行,请指定axis=0,对于列,请指定axis=1

>>> unique_rows = np.unique(a_2d, axis=0)
>>> print(unique_rows)
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]

要获取唯一行、索引位置和出现次数,可以使用:

>>> unique_rows, indices, occurrence_count = np.unique(
...      a_2d, axis=0, return_counts=True, return_index=True)
>>> print(unique_rows)
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]
>>> print(indices)
[0 1 2]
>>> print(occurrence_count)
[2 1 1]

NumPy入门系列教程:

1 NumPy介绍

2 安装和导入NumPy

3 Python列表和NumPy数组有什么区别?

4 什么是array?

5 有关Array的详细信息

6 如何创建array

7 添加、删除和排序元素

8 数组形状和大小

9 重塑array

10 如何将一维array转换为二维array(如何向数组添加新轴)

11 NumPy索引和切片

12 如何从现有数据创建数组

13 数组基本操作

14 广播

15 更有用的数组操作

16 生成随机数

17 获得唯一元素和出现次数