python - 如何在二维列表python中合并关闭点
问题描述
我在合并 Voronoi 图的关闭点时遇到了麻烦,情况如下:
- 我从图像加载地图
- 地图被转换为仅包含表示障碍的点的数组
- Voronoi 图是从此数组计算的
我的想法是将包含许多点的障碍物转换为一个点。
点列表与此类似:
map = [[11, 29], [11, 30], [11, 31], [12, 28], [12, 29], [12, 30]]
我想取一组点并将这些点合并为一个。
我在 numpy-2d(矢量化)中找到了这个快速熔断点的闭合点
考虑到不是“点状”的障碍物,我不知道如何融合这些点
解决方案
我建议你不要map
作为变量名,因为有一个同名的函数。您在流派中的问题是找到与您的链接中的问题相似的集群,但基于数据 k-Dtree 可能不是很好。我会推荐scikit的其他聚类算法:
- KMeans,如果你知道障碍的数量
- DBSCAN,如果您知道障碍物的最大尺寸
从 sklearn.cluster 导入 KMeans,DBSCAN 导入 numpy 作为 np
obstacle_list = [[0, 0], [0, 1], [1, 0], [1, 1], [3, 3], [4, 3],[3,4]]
obstacle_array = np.array(obstacle_list) # for easier handling
#if you know the number of obstacles
number_of_obstacles=2
cluster_values = KMeans(n_clusters=number_of_obstacles).fit_predict(obstacle_array)
print(cluster_values) # those are the cluster MeanShift found
#if you know the maximal size of an obstacle
max_size_of_obstacle = 3
db_values = DBSCAN(eps=max_size_of_obstacle).fit_predict(obstacle_array)
print(cluster_values)# those are the cluster DBSCAN found
如果您希望它仅由可能在中心某处的 1 个点表示),您可以遍历cluster_values
来计算它。我会取 x 和 y 值的平均值,但您的数据似乎只是整数,所以您可能想要取其他值。
推荐阅读
- react-native - 在导航屏幕之前反应本机等待用户登录
- python-3.x - 将所有系统字体列为字典。| Python
- ios - 如何从详细视图控制器以编程方式推送视图控制器
- python-3.x - 为每个循环创建和添加行
- vba - VBA - Sharepoint 签出和签入非 excel 文件
- python - 在 Python 中使用最大似然推导回归系数
- laravel - Laravel 7.x Eloquent 递归关系 - 获取所有 id
- c# - 初始化 AggregateException 时抛出 ArrayTypeMismatchException
- javascript - 使用自定义函数打印对象的深拷贝
- xamarin.forms - 使用 Xamarin 和 Firebase 在 Web 视图应用程序上推送通知