当前位置: 首页>>编程示例 >>用法及示例精选 >>正文


Python NumPy digitize方法用法及代码示例

Numpy 的 digitize(~) 方法返回一个 Numpy 数组,其中包含输入数组中的值所属的 bin 的索引。用简单的语言来解释是很困难的,所以请看例子来澄清。

参数

1. a | array-like

值数组。

2. bins | array-like

bin 数组,必须是一维并按升序排序。

3. right | boolean | optional

如果为 True,则值将被放置在端点的下一个 bin 中。如果为 False,则值将放置在前一个 bin 中。默认情况下,right=False

返回值

整数索引的 Numpy 数组。

例子

基本用法

考虑以下代码片段:

# Our array of values
a = [3, 6.5, 9]
# Our bins
bins = [5, 6, 7, 8]
np.digitize(a, bins)



array([0, 2, 4])

让我们理解这里的输出。

  • 第一个值 3 介于 3 <= 5(第一个 bin)之间,因此返回的整数索引为 0。

  • 第二个值 6.5 介于 6 和 7 之间(第 2 个和第 3 个 bin),因此返回的整数索引为 2。

  • 第三个值 9 大于 8(第 4 个 bin),因此返回的整数索引为 4。

解决这个问题的一个好方法是考虑该值的索引(如果要将其插入到 bin 数组中)。例如,值 3 将被插入到索引 0 中,因此返回 0。 6.5 将插入到索引 2 中,因此返回 2,依此类推。

处理端点

默认情况下,当检查将值放入哪个 bin 时,Numpy 将使用 < 比较。例如,

a = [5]
bins = [5, 6]
np.digitize(a, bins)   # or right=False



array([1])

我们得到整数索引 1 的原因是我们执行的第一次比较是 5 < 5,其计算结果为 False

我们可以执行 <= 比较,而不是 < 比较,如下所示:

a = [5]
bins = [5, 6]
np.digitize(a, bins, right=True)



array([0])

在这里,我们得到整数索引 0,因为第一个比较 5 <=5 的计算结果为 True

相关用法


注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 NumPy | digitize method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。