---
source_url: https://docs.dolphindb.cn/zh/funcs/d/digitize.html
fetched_at: 2026-05-19T09:18:59Z
category: funcs
title: digitize
sha1: 944753fdb446c7b9d7b90798e5f20241d40d0e8b
---

# digitize

## 语法

`digitize(x, bins, [right=false])`

## 详情

返回 *x* 所属的 *bins* 的索引，返回值的数据形式与 *x* 一致。

| right | bins 顺序 | 返回的索引满足 |
| --- | --- | --- |
| false | 升序 | *bins* 里第一个大于 *x* 的元素的索引 |
| true | 升序 | *bins* 里第一个大于等于 *x* 的元素的索引 |
| false | 降序 | *bins* 里第一个小于等于 *x* 的元素的索引 |
| true | 降序 | *bins* 里第一个小于 *x* 的元素的索引 |

如果 *x* 中的值超出 *bins* 的左或右边界，则返回 0 或 *bins* 的长度。

该函数的功能和使用方法同 numpy.digitize。

## 参数

**x**  一个浮点型、整型或 DECIMAL 类型的标量或向量。

**bins** 一个单调递增或递减的浮点型、整型或 DECIMAL 类型向量。

**right** 一个布尔值，为可选参数，设置区间包含右边界还是左边界，默认为 false（包含左边界）。

## 例子

```dolphindb
bins = [1,3,3,5,5]
// 返回 bins 里第一个大于 x 的元素的索引
digitize(3, bins=bins, right=false)
// output: 3
//返回 bins 里第一个大于 x 的元素的索引，由于 bins 里不存在这样的元素，返回 size(bins)
digitize(5, bins=bins, right=false)
//output: 5
// 返回 bins 里第一个大于等于 x 的元素的索引
digitize(5, bins=bins, right=true)
//output: 3
bins = reverse(bins)
digitize(5, bins=bins, right=false)
//output: 0
digitize(5, bins=bins, right=true)
//output: 2

x = [-1,0,1,2,3,4,5,6]
bins = [1,3,5]
digitize(x=x, bins=bins, right=false)
//output: [0,0,1,1,2,2,3,3]
digitize(x=x, bins=bins, right=true)
//output: [0,0,0,1,1,2,2,3]
bins = reverse(bins)
digitize(x=x, bins=bins, right=false)
//output: [3,3,2,2,1,1,0,0]
digitize(x=x, bins=bins, right=true)
//output: [3,3,3,2,2,1,1,0]
```

`digitize` 函数相较于 `bucket` 函数更灵活，可以自定义 *bins*
。以下为示例：

```dolphindb
bucket(9 23 54 36 46 12, 12:53, 2) //报错：dataRange must be the mutltiplier of bucketNum.
```

因为 [12, 53) 中元素个数不能被2整除，所以不能使用 `bucket` 来分桶。

```dolphindb
digitize(9 23 54 36 46 12 , 12 40 53)
// output: [0,1,3,1,2,1]
```

`digitize` 函数中，函数按照自定义的 *bins* 给数据分桶。
