maxframe.tensor.percentile#

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

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

返回数组元素的第 q 个百分位数。

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

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

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

  • out (ndarray, optional) -- 用于放置结果的替代输出数组。它必须与期望输出具有相同的形状和缓冲区长度,但如果需要,输出类型将被转换。

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

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

  • keepdims (bool, optional) -- 如果设置为 True,则在结果中保留被规约的轴,其大小为一。使用此选项时,结果将可以正确地与原始数组 a 进行广播。

返回:

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

返回类型:

scalar or ndarray

参见

mean

median

等价于 percentile(..., 50)

nanpercentile

quantile

等价于百分位数,但 q 的取值范围是 [0, 1]。

备注

给定长度为 N 的向量 VV 的第 q 个百分位数是从最小值到最大值之间 q/100 处的值,在 V 的已排序副本中计算。若标准化排名不完全匹配 q 的位置,两个最近邻的值和距离以及 interpolation 参数将决定百分位数。当 q=50 时,此函数与中位数相同;当 q=0 时与最小值相同;当 q=100 时与最大值相同。

示例

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

不同类型的插值可以图形化显示:

(Source code)