numpy.ptp#
- numpy.ptp(a, axis=None, out=None, keepdims=<no value>)[source]#
沿指定轴计算值的范围(最大值 - 最小值)。
该函数名称源自“peak to peak”(峰峰值)的首字母缩写。
警告
ptp会保留数组的数据类型。这意味着对于 n 位有符号整数输入(例如numpy.int8,numpy.int16等),返回值也将是 n 位有符号整数。在这种情况下,大于2**(n-1)-1的峰峰值将作为负数返回。下面展示了一个解决方法示例。- 参数:
- a类数组对象
输入值。
- axisNone 或 int 或 int 元组,可选
用于寻找峰值的轴。默认情况下,将展平数组。axis 可以是负数,此时它从最后一个轴开始计数。如果这是一个整数元组,则会在多个轴上执行缩减操作,而不是像之前那样仅作用于单个轴或所有轴。
- outarray_like
用于存放结果的替代输出数组。它必须具有与预期输出相同的形状和缓冲区长度,但如果需要,输出值的类型会被强制转换。
- keepdimsbool,可选
如果设置为 True,则被缩减的轴将保留在结果中,其大小为 1。使用此选项,结果将能够与输入数组正确广播。
如果传入默认值,则 keepdims 不会传递给
ndarray子类的ptp方法;但如果传入非默认值,则会传递。如果子类的方法未实现 keepdims,则会引发异常。
- 返回:
- ptpndarray 或标量
给定数组的范围 - 如果数组是一维的则为 标量,否则为沿给定轴保存结果的新数组
示例
>>> import numpy as np >>> x = np.array([[4, 9, 2, 10], ... [6, 9, 7, 12]])
>>> np.ptp(x, axis=1) array([8, 6])
>>> np.ptp(x, axis=0) array([2, 0, 5, 2])
>>> np.ptp(x) 10
此示例显示了当输入是有符号整数数组时,可以返回负值。
>>> y = np.array([[1, 127], ... [0, 127], ... [-1, 127], ... [-2, 127]], dtype=np.int8) >>> np.ptp(y, axis=1) array([ 126, 127, -128, -127], dtype=int8)
解决方法是使用 view() 方法将结果视为具有相同位宽的无符号整数。
>>> np.ptp(y, axis=1).view(np.uint8) array([126, 127, 128, 129], dtype=uint8)