在python的rdp(Ramer–Douglas–Peucker)算法中查找丢弃的点

时间:2018-10-28 12:55:32

标签: python algorithm

是否有办法从python的rdp算法中查找丢弃的点?

算法:

from rdp import rdp

rdp([[1, 1], [2, 2], [3, 3], [4, 4]])

给出压缩后剩余的点:

[[1, 1], [4, 4]]

如果我有一个很大的数据集并应用该算法,那么我想找到丢弃的点。有办法吗?

1 个答案:

答案 0 :(得分:0)

根据文档规定,rdp可以返回其余点的 mask ,它还提供了numpy数组的接口。

一种解决方案是将蒙版与numpy索引结合使用,以同时检索剩余点和废弃点:

import numpy as np
from rdp import rdp

arr = np.array([[1, 1], [2, 2], [3, 3], [4, 4]])
mask = rdp(arr, return_mask=True)

print("remaining: {}".format(arr[mask]))
print("discarded: {}".format(arr[~mask]))

输出

remaining: [[1 1]
 [4 4]]
discarded: [[2 2]
 [3 3]]

注意

arr[mask]表示选择掩码为正的那些点,arr[~mask]选择掩码为负的那些点。