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数组中的重复行。每种方法都很简单,但用途不同。如果您仅仅需要处理小型数据集,请使用方法一或方法二。如果您需要处理较大的数据集,并且对性能要求很高,请使用方法三。