numpy.ma.ptp #
- 嘛。ptp ( obj , axis=None , out=None , fill_value=None , keepdims=<无 值> ) [来源] #
沿给定维度(即峰峰值)返回(最大值 - 最小值)。
警告
ptp
保留数组的数据类型。这意味着 n 位有符号整数(例如np.int8、np.int16等)输入的返回值也是 n 位有符号整数。在这种情况下,大于的峰峰值2**(n-1)-1
将作为负值返回。下面显示了解决方法的示例。- 参数:
- 轴{None, int},可选
沿其查找峰值的轴。如果无(默认),则使用展平数组。
- out {无,类似数组},可选
用于放置结果的替代输出数组。它必须具有与预期输出相同的形状和缓冲区长度,但如果需要,类型将被转换。
- fill_value标量或 None,可选
用于填充屏蔽值的值。
- keepdims布尔值,可选
如果将此设置为 True,则缩小的轴将作为大小为 1 的维度保留在结果中。使用此选项,结果将针对阵列正确广播。
- 返回:
- ptp ndarray。
保存结果的新数组,除非
out
指定,在这种情况下out
返回对的引用。
例子
>>> 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=999999, dtype=int8)
解决方法是使用 view ()方法将结果视为具有相同位宽的无符号整数:
>>> y.ptp(axis=1).view(np.uint8) masked_array(data=[126, 127, 128, 129], mask=False, fill_value=999999, dtype=uint8)