是否有办法从python的rdp算法中查找丢弃的点?
算法:
from rdp import rdp
rdp([[1, 1], [2, 2], [3, 3], [4, 4]])
给出压缩后剩余的点:
[[1, 1], [4, 4]]
如果我有一个很大的数据集并应用该算法,那么我想找到丢弃的点。有办法吗?
答案 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]
选择掩码为负的那些点。