當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python dask.array.digitize用法及代碼示例


用法:

dask.array.digitize(a, bins, right=False)

返回輸入數組中每個值所屬的 bin 的索引。

此文檔字符串是從 numpy.digitize 複製的。

可能存在與 Dask 版本的一些不一致之處。

right

箱子的順序

返回的索引 i 滿足

False

increasing

bins[i-1] <= x < bins[i]

True

increasing

bins[i-1] < x <= bins[i]

False

decreasing

bins[i-1] > x >= bins[i]

True

decreasing

bins[i-1] >= x > bins[i]

如果 x 中的值超出了 bins 的範圍,則酌情返回 0 或 len(bins)

參數

x數組(在 Dask 中不支持)

要分箱的輸入數組。在 NumPy 1.10.0 之前,這個數組必須是一維的,但現在可以有任何形狀。

binsarray_like

箱陣列。它必須是一維且單調的。

right布爾型,可選

指示間隔是否包括右側或左側 bin 邊。默認行為是 (right==False),表示區間不包括右邊。在這種情況下,左 bin 端是打開的,即 bins[i-1] <= x < bins[i] 是單調遞增 bins 的默認行為。

返回

indices整數數組

輸出索引數組,形狀與 x 相同。

拋出

ValueError

如果bins 不是單調的。

TypeError

如果輸入的類型很複雜。

注意

如果 x 中的值超出 bin 範圍,則嘗試使用 digitize 返回的索引來索引 bins 將導致 IndexError。

np.digitize 是根據 np.searchsorted 實現的。這意味著二進製搜索用於對值進行分箱,與之前的線性搜索相比,對於更大數量的分箱,它的縮放效果要好得多。它還消除了輸入數組是一維的要求。

對於單調 _increasing_ bins ,以下是等價的:

np.digitize(x, bins, right=True)
np.searchsorted(bins, x, side='left')

請注意,由於參數的順序是顛倒的,所以邊也必須是顛倒的。 searchsorted 調用稍微快一些,因為它不進行任何單調性檢查。也許更重要的是,它支持所有 dtypes。

例子

>>> x = np.array([0.2, 6.4, 3.0, 1.6])  
>>> bins = np.array([0.0, 1.0, 2.5, 4.0, 10.0])  
>>> inds = np.digitize(x, bins)  
>>> inds  
array([1, 4, 3, 2])
>>> for n in range(x.size):  
...   print(bins[inds[n]-1], "<=", x[n], "<", bins[inds[n]])
...
0.0 <= 0.2 < 1.0
4.0 <= 6.4 < 10.0
2.5 <= 3.0 < 4.0
1.0 <= 1.6 < 2.5
>>> x = np.array([1.2, 10.0, 12.4, 15.5, 20.])  
>>> bins = np.array([0, 5, 10, 15, 20])  
>>> np.digitize(x,bins,right=True)  
array([1, 2, 3, 4, 4])
>>> np.digitize(x,bins,right=False)  
array([1, 3, 3, 4, 5])

相關用法


注:本文由純淨天空篩選整理自dask.org大神的英文原創作品 dask.array.digitize。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。