python - 删除 2D numpy 数组中的重复行,保持第一个实例和排序
问题描述
我有一个二维 Numpy 数组,其中一些行不是唯一的,即当我这样做时:
import numpy as np
data.shape #number of rows X columns in data
# (75000, 8)
np.unique(data.T, axis=0).shape #number of unique rows is fewer than above
# (74801, 8)
从 的第一行开始data
,我想删除与前一行重复的任何行,保持行的原始顺序。在上面的例子中,新的 Numpy 数组的最终形状应该是 (74801, 8)。
例如,给定以下数据数组
data = np.array([[1,2,1],[2,2,3],[3,3,2],[2,2,3],[1,1,2],[0,0,0],[3,3,2]])
print(data)
[[1 2 1]
[2 2 3]
[3 3 2]
[2 2 3]
[1 1 2]
[0 0 0]
[3 3 2]]
我想拥有原始顺序中的唯一行,即
[[1 2 1]
[2 2 3]
[3 3 2]
[1 1 2]
[0 0 0]]
任何有关有效解决方案的提示将不胜感激!
解决方案
尝试numpy.unique
使用“return_index”参数:
data[np.sort(np.unique(data, axis = 0, return_index = True)[1])]
顾名思义,它将在元组中按该顺序返回唯一行及其索引(这就是为什么[1]
最后有 a )。
您还可以使用pandas
:
import pandas as pd
pd.DataFrame(data).drop_duplicates().values
推荐阅读
- mysql - 使用 group by 优化 mysql 查询
- python - 如何在 Python 中计算多类分类中的 Accuracy、FPR、FNR 的平均值?
- ms-access - 尝试向表中添加记录时出现错误“无法添加记录;表‘项’的连接键不在记录集中”
- java - 当应用程序部署在负载均衡器后面的多个实例上时,如何在 Java 中同步公共资源
- javascript - 有没有办法将新功能注册到窗口对象?
- c# - 有谁知道 ViewPointCenter 中比例参数中使用的比例单位?
- nestjs - 如何将所有异常记录到 Nest.js 中的自定义记录器?
- assembly - 如何逐个元素地对两个矩阵求和?
- android - Play Protect 在我的自定义库上显示警告
- javascript - 如何制作多个嵌套对象的数组?