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


Python tf.searchsorted用法及代碼示例

搜索值在排序序列中的位置。

用法

tf.searchsorted(
    sorted_sequence, values, side='left', out_type=tf.dtypes.int32,
    name=None
)

參數

  • sorted_sequence N-D Tensor 包含已排序的序列。
  • values N-D Tensor 包含搜索值。
  • side 'left'或'right'; 'left' 對應於lower_bound,'right' 對應於upper_bound。
  • out_type 輸出類型(int32int64)。默認為 tf.int32
  • name 操作的可選名稱。

返回

  • 一個 N-D Tensor 大小為 values 包含將 lower_bound 或 upper_bound(取決於邊)應用於每個值的結果。結果不是整個 Tensor 的全局索引,而是最後一個維度中的索引。

拋出

  • ValueError 如果 sorted_sequence >= 2^31-1 元素的最後一個維度。如果values 的總大小超過2^31 - 1 元素。如果兩個張量的第一個 N-1 維度不匹配。

這不是檢查遏製的方法(如 python in )。

此操作的典型用例是"binning"、"bucketing" 或"discretizing"。 values 根據 sorted_sequence 中列出的邊分配給 bucket-indices。此操作返回每個值的bucket-index。

edges = [-1, 3.3, 9.1, 10.0]
values = [0.0, 4.1, 12.0]
tf.searchsorted(edges, values).numpy()
array([1, 2, 4], dtype=int32)

side 參數控製如果值恰好落在邊上,則返回哪個索引:

seq = [0, 3, 9, 10, 10]
values = [0, 4, 10]
tf.searchsorted(seq, values).numpy()
array([0, 2, 3], dtype=int32)
tf.searchsorted(seq, values, side="right").numpy()
array([1, 2, 5], dtype=int32)

axis 不可為此操作設置。它總是在最裏麵的維度(axis=-1)上運行。該操作將接受任意數量的外部尺寸。在這裏,它應用於矩陣的行:

sorted_sequence = [[0., 3., 8., 9., 10.],
                   [1., 2., 3., 4., 5.]]
values = [[9.8, 2.1, 4.3],
          [0.1, 6.6, 4.5, ]]
tf.searchsorted(sorted_sequence, values).numpy()
array([[4, 1, 2],
       [0, 5, 4]], dtype=int32)

注意:此操作假設sorted_sequence 已排序沿著最內軸,也許使用tf.sort(..., axis=-1).如果序列未排序,則不會引發錯誤並且返回的張量的內容沒有很好的定義。

相關用法


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