You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在h3-py中使用向量化H3函数?解决调用报错问题

针对H3-py 3.7.6版本的百万级Numpy经纬度数组向量化转换方案

问题原因说明

  • h3.geo_to_h3_vect是H3-py 2.x版本的旧函数,3.x版本已移除,因此调用会触发AttributeError。
  • 直接调用h3.api.numpy_int.geo_to_h3报错TypeError: only size-1 arrays can be converted to Python scalars,通常是因为当前版本该函数对Numpy数组的输入支持存在兼容性限制,或输入维度/类型不符合要求(需确保为一维float类型数组)。

正确解决方案

方案一:使用Numpy专属API(优先推荐)

导入h3.api.numpy_int模块并调用,该API专为Numpy数组优化,原生支持向量化输入:

import numpy as np
import h3.api.numpy_int as h3_np

# 生成百万级经纬度数组
lats = np.random.uniform(0, 90, 1_000_000) 
lons = np.random.uniform(0, 90, 1_000_000)

# 向量化转换为H3 ID
h3_ids = h3_np.geo_to_h3(lats, lons, 6)

方案二:批量处理兼容方案

若方案一仍报错,可通过批量函数处理,将Numpy数组转换为元组列表后调用:

import numpy as np
import h3

# 生成百万级经纬度数组
lats = np.random.uniform(0, 90, 1_000_000) 
lons = np.random.uniform(0, 90, 1_000_000)

# 转换为(lat, lon)元组列表
points = list(zip(lats, lons))
# 批量生成H3 ID并转回Numpy数组
h3_ids = np.array(h3.bulk_geo_to_h3(points, res=6))

内容的提问来源于stack exchange,提问作者Georg Heiler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 11:50:31