Python numpy 高效实现二维数组去重
本文介绍了一种基于 numpy 的高效二维数组去重方法。通过将浮点数坐标转换为复数形式,利用 np.unique 获取唯一索引,从而快速实现数据去重。代码包含详细注释及测试用例,适用于需要高性能去重的场景。
以下直接展示核心代码,其中包含详细的注释说明。
# coding = utf-8
import numpy as np
from IPython import embed
# xy 输入,可支持浮点数操作 速度很快哦
# return xy 去重后结果
def duplicate_removal(xy):
if xy.shape[0] < 2:
return xy
_tmp = (xy*4000).astype('i4') # 转换成 i4 处理
_tmp = _tmp[:,0] + _tmp[:,1]*1j # 转换成复数处理
keep = np.unique(_tmp, return_index=True)[1] # 去重 得到索引
return xy[keep] # 得到数据并返回
# _tmp[:,0] 切片操作,因为时二维数组,_tmp[a:b, c:d]为通用表达式,
# 表示取第一维的索引 a 到索引 b,和第二维的索引 c 到索引 d
# 当取所有时可以直接省略,但要加':'冒号 、当 a == b 时可只写 a ,同时不用':'冒号
if __name__ == '__main__':
if 1: # test
xy = np.array([[1.0, 1.0, 1.0], [2.0, 2.0, 2.0], [3.0, 0.0, 0.0], [1.0, 1.0, 1.00]])
print(xy)
new_xy = duplicate_removal(xy)
print(new_xy)
embed()
以上就是 Python numpy 实现二维数组去重的完整示例,希望能为读者提供有价值的参考。欢迎大家继续支持本站,获取更多技术分享。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













