mindspore.ops.Median

class mindspore.ops.Median(global_median=False, axis=0, keep_dims=False, ignore_nan=False)[源代码]

输出Tensor指定维度 axis 上的中值与其对应的索引。如果 global_median 为True,则计算Tensor中所有元素的中值。

警告

  • 如果 input 的中值不唯一时(输入中有重复值且重复值恰好为中值), indices 不一定包含第一个出现的中值。 indices 包含的索引与该算子的具体实现方式和后端类型相关,因此某些情况下,CPU和GPU的返回值可能不相同。

  • 如果 global_medianTrue , 第二个输出 indices 无意义。

参数:
  • global_median (bool, 可选) - 是否计算Tensor中所有元素的中值。默认值: False

  • axis (int, 可选) - 进行中值计算的轴。默认值: 0

  • keep_dims (bool, 可选) - 是否保留 axis 指定的维度。默认值: False

  • ignore_nan (bool, 可选) - 是否忽略输入Tensor中的NaN值。默认值: False

输入:
  • x (Tensor) - 要计算中值的Tensor。

输出:
  • y (Tensor) - 中值,数据类型与 x 相同。

    • 如果 global_medianTruey 只有一个元素。

    • 如果 keep_dimsTrue , y 的shape除了在 axis 维度上为1外与 x 一致。

    • 其他情况下, yx 缺少 axis 指定的维度。

  • indices (Tensor) - 中值的索引。shape与 y 一致,数据类型为int64。

异常:
  • TypeError - x 不是Tensor。

  • TypeError - global_mediankeep_dimsignore_nan 被指定了一个非bool值。

  • TypeError - axis 不是int。

  • ValueError - axis 不在 [-x.dim, x.dim-1] 范围内。

支持平台:

GPU CPU

样例:

>>> # case 1 : common median compute
>>> from mindspore import Tensor, ops
>>> import numpy as np
>>> x = Tensor(np.array([[5, 1, 2],[3, 5, 7], [1, 6, 4]]).astype(np.int64))
>>> median = ops.Median(global_median=False, axis=0, keep_dims=False)
>>> y = median(x)
>>> print(y)
(Tensor(shape=[3], dtype=Int64, value= [3, 5, 4]), Tensor(shape=[3], dtype=Int64, value= [1, 1, 2]))
>>> # case 2 : global median compute
>>> from mindspore import Tensor, ops
>>> import numpy as np
>>> x = Tensor(np.array([[1, 7, 6],[5, 1, 3],[9, 17, 1]]).astype(np.int32))
>>> median = ops.Median(global_median=True)
>>> y = median(x)
>>> print(y)
(Tensor(shape=[], dtype=Int32, value= 5), Tensor(shape=[], dtype=Int64, value= 0))