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

scipy.stats.binned_statistic分箱映射逻辑及参数作用咨询

关于stats.binned_statistic的疑问解答

先看示例代码:

rng = np.random.default_rng(seed=3576)
windspeed = 8 * rng.random(500)
boatspeed = .3 * windspeed**.5 + .2 * rng.random(500)
bin_means, bin_edges, binnumber = stats.binned_statistic(windspeed,
                boatspeed, statistic='median', bins=[1,2,3,4,5,6,7])

示例中bin_means的第一个值(对应分箱[1,2)的中位数)为0.48067334,对应boatspeed数组的第90个元素(Python索引为89)。

疑问1:函数如何将分箱边缘映射到boatspeed数据?第90个元素为何属于[1,2]分箱?

  • 函数核心逻辑是用第一个输入序列(windspeed)做分组依据:先遍历每个windspeed元素,判断它落在哪个分箱区间里(默认左闭右开规则,比如bins=[1,2,3]对应的区间是[1,2)、[2,3))。
  • windspeed和boatspeed的元素是一一对应的,当某个windspeed元素被分到某个箱时,对应的boatspeed元素也会被划入同一个箱。
  • 第90个元素(索引89)对应的windspeed[89]值必然落在[1,2)区间内,所以它对应的boatspeed元素就被归到第一个分箱,该分箱的中位数就是0.48067334。你可以直接打印windspeed[89]验证这个值的范围。

疑问2:windspeed向量的作用是什么?统计针对boatspeed为何需要它?

windspeed是分组的基准序列,这个函数的本质是「根据A序列的区间分组,计算B序列在每组的统计量」。比如实际场景中我们想分析「不同风速区间下的船速中位数」,就需要用风速(windspeed)划分区间,把对应区间的船速(boatspeed)挑出来计算统计量。如果没有windspeed,函数根本不知道该怎么对boatspeed进行分组——总不能凭空把船速分成[1,2)、[2,3)这些区间吧?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 03:33:31