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

如何筛选距离矩阵:获取指定客户端半径内的城市列表

实现按客户端筛选指定半径内城市的函数

核心需求是:给定客户端X和距离阈值,返回所有与X距离小于阈值的城市名称列表。下面分两种常用数据结构给出实现方案:

基于Pandas的实现(适合结构化表格数据)

假设你用Pandas DataFrame存储客户端-城市的距离数据,行索引是客户端名称,列名是城市名称,单元格值为对应距离。

代码示例

import pandas as pd

def get_nearby_cities(client_x, radius, df):
    # 定位目标客户端的行数据
    client_distances = df.loc[client_x]
    # 筛选距离小于阈值的城市,并转为列表
    return client_distances[client_distances < radius].index.tolist()

# 构造示例数据
distance_df = pd.DataFrame(
    data={
        'A': [0, 3.1, 2.2],
        'B': [1.2, 0, 1.8],
        'C': [1.5, 1.8, 0],
        'D': [0.8, 2.5, 3.0],
        'E': [1.9, 2.1, 2.7],
        'F': [1.7, 2.3, 1.1],
        'I': [1.3, 3.2, 2.4],
        'M': [1.6, 2.0, 2.9],
        'O': [1.4, 2.8, 1.5]
    },
    index=['A', 'B', 'C']
)

# 测试函数
print(get_nearby_cities('A', 2, distance_df))
# 输出: ['A', 'B', 'C', 'D', 'E', 'F', 'I', 'M', 'O']

关键步骤说明

  • df.loc[client_x]:通过行索引精准获取目标客户端对应的所有城市距离数据,返回一个Series对象(索引为城市名,值为距离)。
  • client_distances < radius:生成布尔掩码,标记出距离小于阈值的城市。
  • .index.tolist():提取符合条件的城市名称,转为列表返回。

基于原生Python字典的实现(适合轻量数据)

如果数据用嵌套字典存储(外层键为客户端,内层键为城市,值为距离),可以直接用列表推导式实现:

代码示例

def get_nearby_cities(client_x, radius, distance_dict):
    # 获取目标客户端的城市-距离映射
    client_data = distance_dict[client_x]
    # 过滤并返回符合条件的城市列表
    return [city for city, dist in client_data.items() if dist < radius]

# 构造示例数据
distance_dict = {
    'A': {
        'A': 0, 'B': 1.2, 'C': 1.5, 'D': 0.8,
        'E': 1.9, 'F': 1.7, 'G': 2.1, 'I': 1.3,
        'M': 1.6, 'O': 1.4
    },
    'B': {
        'A': 3.1, 'B': 0, 'C': 1.8  # 可补充其他城市距离数据
    }
}

# 测试函数
print(get_nearby_cities('A', 2, distance_dict))
# 输出目标城市列表

关键步骤说明

  • 直接通过键取值distance_dict[client_x]拿到目标客户端的所有城市距离数据。
  • 用列表推导式遍历城市-距离对,筛选出距离小于阈值的城市名。

内容的提问来源于stack exchange,提问作者Valentin Galardi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 13:50:22