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

如何将0-1500.5范围内的浮点数按宽度10高效分箱映射?

映射规则说明

根据你给出的示例,可以明确映射逻辑为:

  • 取值范围在 [k*10, (k+1)*10) 的数值,统一映射为 (k+1)*10(k为非负整数)
  • 如果需要保留刚好等于10的整数倍的数值原值(比如100.0→100、0.0→0),可以加额外的边界判断
高效实现方案

因为你处理的是固定形状的浮点数组,优先使用numpy的向量化运算,无额外循环开销,时间复杂度为O(n),效率远高于普通Python循环。

1. Numpy实现(推荐,数组处理最优)

基础版(完全匹配你给出的所有示例)

import numpy as np

# 你的输入数组,形状为(1000, 1)
input_arr = np.array([1.1, 505.3, 0.1, 210.1, 100.0, 0.0]).reshape(-1, 1)
# 核心映射逻辑
result = (input_arr // 10 + 1) * 10

运行结果完全匹配示例:
[[ 10.] [510.] [ 10.] [220.] [110.] [ 10.]]

兼容10整倍数原值的版本

如果需要100.0映射为100、0.0映射为0,调整代码如下:

result = np.where(input_arr % 10 == 0, input_arr, (input_arr // 10 + 1) * 10)

运行结果:
[[ 10.] [510.] [ 10.] [220.] [100.] [ 0.]]

2. 纯Python实现(无第三方依赖场景)

如果不需要处理大规模数组、不想引入numpy,可以用列表推导式实现:

# 输入列表,形状(1000,1)
input_list = [[1.1], [505.3], [0.1], [210.1], [100.0], [0.0]]
# 基础版
result = [[(x[0] // 10 + 1) * 10] for x in input_list]
# 兼容10整倍数原值的版本
result = [[x[0] if x[0] % 10 == 0 else (x[0] //10 +1)*10] for x in input_list]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:15:03