Numpy中如何去除具有重复行的数组

Numpy中如何去除具有重复行的数组

在本文中,我们将介绍在NumPy数组中如何去除具有重复行的情况。首先,让我们定义一个具有重复行的NumPy数组。

import numpy as np

a = np.array([[1, 2, 3],
              [4, 5, 6],
              [1, 2, 3],
              [7, 8, 9]])

在上面的代码中,我们定义了一个大小为4×3的NumPy数组,其中第1行和第3行是重复的,我们需要将其删除。

阅读更多:Numpy 教程

方法一

首先,我们可以使用numpy.unique函数来获取没有重复行的数组:

b = np.unique(a, axis=0)
print(b)

输出结果为:

array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

在上面的代码中,我们传递了axis=0参数来表示在行方向上执行操作。

方法二

另一个方法是使用set来检查重复项。

b = []

for row in a:
    if tuple(row) not in b:
        b.append(tuple(row))

b = np.array(b)

print(b)

输出结果为:

array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

在上面的代码中,我们对每一行执行了两个操作:将其转换为一个元组,并检查它是否在已有的列表中。如果存在,则不添加该行,否则添加该行。最终,我们通过numpy.array将元组列表转换为数组。

方法三

另一个方法是使用pandas库。我们可以使用Pandas Dataframe对象中的drop_duplicates函数来删除重复项。

import pandas as pd

df = pd.DataFrame(a)
df.drop_duplicates(inplace=True)

b = df.values

print(b)

输出结果为:

array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

在上面的代码中,我们首先将NumPy数组转换为Pandas Dataframe。然后我们对Dataframe执行了drop_duplicates函数。最后,我们将Dataframe转换回NumPy数组。

总结

在本文中,我们介绍了三种方法去除NumPy数组中的重复行。每种方法都很简单,但用途不同。如果您仅仅需要处理小型数据集,请使用方法一或方法二。如果您需要处理较大的数据集,并且对性能要求很高,请使用方法三。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程