发布于 4年前

numpy数组去掉重复的行,保留唯一的行数据

有以下numpy.array数据:

>>> original_array # 
array([[1, 1, 1, 0, 0, 0],
       [0, 1, 1, 1, 0, 0],
       [0, 1, 1, 1, 0, 0],
       [1, 1, 1, 0, 0, 0],
       [1, 1, 1, 1, 1, 0]])

期待去掉重复的行结果为:

>>> unique_rows # 
array([[1, 1, 1, 0, 0, 0],
       [0, 1, 1, 1, 0, 0],
       [1, 1, 1, 1, 1, 0]])

解决方法

NumPy 1.13 可以使用unique,只需选择axis,即可在任何N维数组中选择唯一值。

去掉重复,保留唯一行

unique_rows = np.unique(original_array, axis=0)

需要注意的是,它会把重复的行留下其中一行,并不会删除所有重复的行。

删除所有重复的行:

使用reture_counts

arr, uniq_cnt = np.unique(original_array, axis=0, return_counts=True)
original_array= arr[uniq_cnt==1]

使用uniq_cnt为1作为过滤。

©2020 edoou.com   京ICP备16001874号-3