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

时间:2022-02-10 17:48:01

有以下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作为过滤。