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

如何让numpy直方图包含右区间边界而非左区间边界?

让numpy.histogram包含右区间边界而非左的方法

要实现让numpy.histogram的区间包含右边界、不包含左边界,可以用以下几种方式:

方法1:给数据减去极小值

利用浮点数精度的极小值(np.finfo(float).eps)调整数据,让原本等于bin右边界的元素落入前一个区间:

import numpy as np

array = np.array([1,1,1])
eps = np.finfo(float).eps
counts, bins = np.histogram(array - eps, bins=np.arange(0,3))
print(counts, bins)
# 输出:[3 0] [0 1 2]

这个方法的核心是通过微小偏移,让原本属于[1,2)区间的1,变成略小于1的值,从而被划入[0,1)区间,达到等效于区间(0,1]的统计效果。

方法2:使用np.digitize手动统计

用np.digitize并设置right=True参数(该参数会让区间变为(left, right]),再统计每个区间的元素数量:

import numpy as np

array = np.array([1,1,1])
bins = np.arange(0,3)
# 获取每个元素所属的bin索引
indices = np.digitize(array, bins, right=True)
# 统计各索引的数量,注意索引从1开始,对应bins的区间(0,1], (1,2]
counts = np.bincount(indices, minlength=len(bins))[1:]
print(counts, bins)
# 输出:[3 0] [0 1 2]

这里np.digitize(..., right=True)会把x <= bins[i]且x > bins[i-1]的元素分到第i个区间,刚好符合“包含右边界、不包含左边界”的需求,再通过np.bincount统计每个区间的元素数即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 19:33:24