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,其中fraction是i和j之间的索引的小数部分。 * 'lower':i。 * 'higher':j。 * 'nearest':i或j,选择最近的一个。 * 'midpoint':(i + j) / 2。keepdims (bool, optional) -- 如果设置为 True,则在结果中保留被规约的轴,其大小为一。使用此选项时,结果将可以正确地与原始数组 a 进行广播。
- 返回:
percentile -- 如果 q 是单个百分位数且 axis=None,则结果为标量。如果提供了多个百分位数,则结果的第一个轴对应于百分位数。其余轴是 a 被规约后保留的轴。如果输入包含小于
float64的整数或浮点数,则输出数据类型为float64。否则,输出数据类型与输入相同。如果指定了 out,则返回该数组。- 返回类型:
scalar or ndarray
备注
给定长度为
N的向量V,V的第 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])
不同类型的插值可以图形化显示: