如何用NumPy获得数组的唯一元素

  • Post category:Python

获取数组唯一元素在数据处理和数据分析过程中非常常见,NumPy提供了一些方便的方法来实现这个功能。下面是获得数组唯一元素的完整攻略:

方法一:使用numpy.unique()函数

numpy.unique()函数可以找到数组中的唯一元素,并返回一个新的已排序的数组。该函数的语法如下:

numpy.unique(arr, return_index=False, return_inverse=False, return_counts=False, axis=None)
  • arr:将要计算的数组;
  • return_index:如果Ture,返回输入数组中唯一元素的索引数组;
  • return_inverse:如果Ture,返回输入数组中唯一元素的下标和元素不重复的数组组成的新数组 inverse;
  • return_counts:如果Ture,返回输入数组中唯一元素出现的次数;
  • axis:沿着某个轴处理数组,如果为None,则处理数组为一维数组。

示例一:

import numpy as np

arr = np.array([1,2,3,3,4,4,4,5,5,6])
unique_arr = np.unique(arr)

print("原数组:", arr)
print("唯一元素数组:", unique_arr)

输出结果为:

原数组: [1 2 3 3 4 4 4 5 5 6]
唯一元素数组: [1 2 3 4 5 6]

示例二:

import numpy as np

arr = np.array([[1, 2, 3],
                [3, 4, 5],
                [6, 7, 8],
                [8, 9, 10]])
unique_arr = np.unique(arr, axis=0)

print("原数组:")
print(arr)
print("唯一元素数组:")
print(unique_arr)

输出结果为:

原数组:
[[ 1  2  3]
 [ 3  4  5]
 [ 6  7  8]
 [ 8  9 10]]
唯一元素数组:
[[ 1  2  3]
 [ 3  4  5]
 [ 6  7  8]
 [ 8  9 10]]

方法二:使用numpy.ndarray.flatten()函数

numpy.ndarray.flatten()函数可以将多维数组简化成一维数组。此时,可以借助set()函数去除列表中的重复元素,最后将其转为数组即可。

示例三:

import numpy as np

arr = np.array([[1, 2, 3],
                [3, 4, 5],
                [6, 7, 8],
                [8, 9, 10]])
unique_arr = np.array(list(set(arr.flatten())))

print("原数组:")
print(arr)
print("唯一元素数组:")
print(unique_arr)

输出结果为:

原数组:
[[ 1  2  3]
 [ 3  4  5]
 [ 6  7  8]
 [ 8  9 10]]
唯一元素数组:
[ 1  2  3  4  5  6  7  8  9 10]

以上就是NumPy获得数组唯一元素的两种方法,如果有需要的话可以按需使用。