maxframe.tensor.quantile#

maxframe.tensor.quantile(a, q, axis=None, out=None, overwrite_input=False, interpolation='linear', keepdims=False, **kw)[源代码]#

计算沿指定轴的数据的第 q 分位数。

参数:
  • a (array_like) -- 输入张量或可以转换为张量的对象。

  • q (array_like of float) -- 要计算的分位数或分位数序列,必须在 0 到 1 之间(包含 0 和 1)。

  • axis ({int, tuple of int, None}, optional) -- 计算分位数的轴。默认情况下,沿张量的扁平化版本计算分位数。

  • out (Tensor, optional) -- 用于放置结果的替代输出张量。它必须与预期输出具有相同的形状和缓冲区长度,但必要时会进行类型转换。

  • overwrite_input (bool, optional) -- 仅用于与 Numpy 兼容,不会生效。

  • interpolation ({'linear', 'lower', 'higher', 'midpoint', 'nearest'}) -- 此可选参数指定当所需分位数位于两个数据点 i < j 之间时使用的插值方法: * linear: i + (j - i) * fraction,其中 fraction 是被 ij 包围的索引的小数部分。 * lower: i。 * higher: j。 * nearest: ij,取最近的一个。 * midpoint: (i + j) / 2

  • keepdims (bool, optional) -- 如果设置为 True,则在结果中保留被缩减的轴作为大小为 1 的维度。使用此选项时,结果可以正确地与原始张量 a 广播。

返回:

quantile -- 如果 q 是单个分位数且 axis=None,则结果是一个标量。如果给出多个分位数,则结果的第一个轴对应于分位数。其余轴是 a 被缩减后保留的轴。如果输入包含小于 float64 的整数或浮点数,则输出数据类型为 float64。否则,输出数据类型与输入相同。如果指定了 out,则返回该张量。

返回类型:

scalar or Tensor

参见

mean

percentile

等价于 quantile,但 q 的范围是 [0, 100]。

median

等价于 quantile(..., 0.5)

nanquantile

备注

给定一个长度为 N 的向量 VV 的第 q 分位数是在 V 的排序副本中从最小值到最大值按 q 比例的距离值。如果标准化排名不完全匹配 q 的位置,则两个最近邻的值和距离以及 interpolation 参数将决定分位数。如果 q=0.5,此函数与中位数相同;如果 q=0.0,与最小值相同;如果 q=1.0,与最大值相同。

示例

>>> import maxframe.tensor as mt
>>> a = mt.array([[10, 7, 4], [3, 2, 1]])
>>> a.execute()
array([[10,  7,  4],
       [ 3,  2,  1]])
>>> mt.quantile(a, 0.5).execute()
3.5
>>> mt.quantile(a, 0.5, axis=0).execute()
array([6.5, 4.5, 2.5])
>>> mt.quantile(a, 0.5, axis=1).execute()
array([7.,  2.])
>>> mt.quantile(a, 0.5, axis=1, keepdims=True).execute()
array([[7.],
       [2.]])
>>> m = mt.quantile(a, 0.5, axis=0)
>>> out = mt.zeros_like(m)
>>> mt.quantile(a, 0.5, axis=0, out=out).execute()
array([6.5, 4.5, 2.5])
>>> m.execute()
array([6.5, 4.5, 2.5])