gpt4 book ai didi

python - 如何在 numpy 数组中查找值簇

转载 作者:太空宇宙 更新时间:2023-11-03 18:12:07 25 4
gpt4 key购买 nike

我有一个气压数据数组(M x N)(网格模型数据)。还有两个用于纬度和经度的数组(也是 M x N)。要构建等压线(等压表面)的 GeoJSON,我需要找到给定步长(1 Pa、0.5 Pa)的压力值簇。一般来说,我想这样解决它:

  1. 构建对象列表:[{ lat, lon, pressure },..] 以将纬度和经度数据与压力关联起来;
  2. 按压力对物体进行排序;
  3. 对于列表中的每个对象:比较其压力值并移至专用列表;
  4. 创建 GeoJSON 功能。

但是第三步我还不太清楚:如何智能地找到簇?我应该寻找哪种算法?我可以使用 scipy.cluster 包来做到这一点吗?

最佳答案

我认为您根本没有在寻找集群。

显然给出了等压线范围。因此,将您的数据集拆分为它们;您不需要为此进行排序 - 只需找到最小值和最大值即可获得所有存储桶,然后根据每个存储桶分别选择数据。这很好地将问题分解为更小的 block 。

我猜你的问题主要是可视化问题。您想要显示相似压力的区域而不是点,对吗?

不要考虑最小二乘优化 (k-means) 等统计方法(它需要预先定义参数 k),而是考虑考虑可视化技术,例如 Alpha Shapes (与凸包密切相关,但它们也允许非凸形状)。如果您计算每个压力域的 alpha 形状,您应该会获得这些区域的良好可视化效果。

如果您坚持使用集群,请查看 DBSCAN 。主要是因为它允许非凸形状的簇,并且它可以使用纬度+经度(k-means 不能)。但即使是 HAC 也可能给您带来良好的结果,因为您可以根据数据分辨率定义切割阈值(例如,合并任何点 - 在同一个压力桶中 - 如果它们相距小于 1 公里)。

关于python - 如何在 numpy 数组中查找值簇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25729044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com