如何获取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
相关产品推荐
相关产品推荐

