获取数组唯一元素在数据处理和数据分析过程中非常常见,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获得数组唯一元素的两种方法,如果有需要的话可以按需使用。