numpy.ma.ptp#

ma.ptp(obj, axis=None, out=None, fill_value=None, keepdims=<no value>)[源代码]#

沿给定维度返回(最大值 - 最小值)(即峰峰值).

警告

ptp 保留数组的数据类型.这意味着对于一个 n 位有符号整数(例如 np.int8, np.int16 等)的输入,返回值也是一个 n 位有符号整数.在这种情况下,峰峰值大于 2**(n-1)-1 的值将作为负值返回.下面显示了一个带有解决方法的示例.

参数:
axis{None, int}, 可选

沿其寻找峰值的轴.如果为 None(默认),则使用展平的数组.

out{None, 类数组}, 可选

要在其中放置结果的替代输出数组.它必须具有与预期输出相同的形状和缓冲区长度,但如有必要,类型将被强制转换.

fill_value标量或无,可选

用于填充掩码值的值.

keepdims布尔值, 可选

如果设置为 True,被减少的轴将作为尺寸为1的维度保留在结果中.使用此选项,结果将正确地与数组广播.

返回:
ptpndarray.

除非指定了 out ,否则将返回一个保存结果的新数组,在这种情况下,将返回对 out 的引用.

示例

>>> import numpy as np
>>> x = np.ma.MaskedArray([[4, 9, 2, 10],
...                        [6, 9, 7, 12]])
>>> x.ptp(axis=1)
masked_array(data=[8, 6],
             mask=False,
       fill_value=999999)
>>> x.ptp(axis=0)
masked_array(data=[2, 0, 5, 2],
             mask=False,
       fill_value=999999)
>>> x.ptp()
10

这个例子展示了当输入是一个有符号整数数组时,可以返回一个负值.

>>> y = np.ma.MaskedArray([[1, 127],
...                        [0, 127],
...                        [-1, 127],
...                        [-2, 127]], dtype=np.int8)
>>> y.ptp(axis=1)
masked_array(data=[ 126,  127, -128, -127],
             mask=False,
       fill_value=np.int64(999999),
            dtype=int8)

一种解决方法是使用 view() 方法将结果查看为具有相同位宽的无符号整数:

>>> y.ptp(axis=1).view(np.uint8)
masked_array(data=[126, 127, 128, 129],
             mask=False,
       fill_value=np.int64(999999),
            dtype=uint8)