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


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。