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

如何将基于分位数邻近值修改数组值的R代码改写为Python实现

需求描述
  • 输入数值数组:1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 123, 123, 154, 243, 213, 1231241237, 1231241236, 1231241239
  • 目标输出结果:1, 1, 1, 1, 1, 1 ,1 ,1, 1, 1, 1, 1, 1, 154, 154, 154, 154, 154, 1231241239, 1231241239, 1231241239
  • 核心规则:计算数组的0%、25%、50%、75%、100%分位点,将数组中每个元素替换为距离它最近的分位点值
参考R代码
vector <- c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 123, 123, 154, 243, 213, 1231241237, 1231241236, 1231241239)
q <- quantile(vector, probs = c(0, 0.25, 0.5, 0.75, 1)) %>% unname()
q[sapply(vector, function(x) which.min(abs(x - q)))]
Python版本实现

使用numpy实现和R完全一致的逻辑,运行结果匹配目标输出:

import numpy as np

# 输入数组
vector = np.array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 123, 123, 154, 243, 213, 1231241237, 1231241236, 1231241239])
# 计算五个指定分位点,对齐R默认分位计算规则
q = np.quantile(vector, q=[0, 0.25, 0.5, 0.75, 1])
# 逐元素匹配距离最近的分位点完成替换
result = q[np.argmin(np.abs(vector[:, np.newaxis] - q), axis=1)]

print(result)
# 输出:[        1         1         1         1         1         1         1
#          1         1         1         1         1         1       154
#        154       154       154       154 1231241239 1231241239 1231241239]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:33:19