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

如何获取numpy数组A中每个类别对应的数组B的近似值集合

实现方案

方法1:字典+zip修正版(适配你之前的实现思路)

你之前用zip实现失败大概率是没有处理同标签值的追加逻辑,修正后代码如下:

import numpy as np

# 示例输入数据
A = np.array([-100, -100, -88, 87, 85, 32, 32, 32])
B = np.array([-100.3, -100.1, -86.5, 87.3, 85.5, 32.6,32.1,32.5])

res = {}
for label, val in zip(A, B):
    # 标签不存在时初始化空列表,存在时直接追加值
    if label not in res:
        res[label] = []
    res[label].append(val)

# 若需要按数值升序排列每个标签下的近似值,新增以下步骤
for k in res:
    res[k].sort()

运行后直接取res[-100]即可得到[-100.3, -100.1],res[32]可得到[32.1, 32.5, 32.6],完全匹配需求。

方法2:Numpy原生实现(更适合大数组场景)

如果后续数组规模增大,用Numpy自带的布尔索引实现效率更高,代码更简洁:

import numpy as np

A = np.array([-100, -100, -88, 87, 85, 32, 32, 32])
B = np.array([-100.3, -100.1, -86.5, 87.3, 85.5, 32.6,32.1,32.5])

# 提取所有唯一分类标签
unique_labels = np.unique(A)
# 按标签筛选对应B的元素
res = {label: B[A == label] for label in unique_labels}

# 排序逻辑同上
for k in res:
    res[k].sort()

格式输出

如果需要打印你示例中的格式,新增以下代码即可:

for label, vals in res.items():
    print(f"for {label}:{','.join(map(str, vals))}")

内容的提问来源于stack exchange,提问作者Karthik N

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 11:12:04