numpy.ptp#
- numpy.ptp(a, axis=None, out=None, keepdims=<no value>)[source]#
沿轴计算值的范围(最大值 - 最小值)。
函数的名称来自“峰峰值”的首字母缩略词。
警告
ptp
保留数组的数据类型。这意味着对于输入为 n 位有符号整数(例如numpy.int8
、numpy.int16
等),返回值也是一个 n 位有符号整数。在这种情况下,峰峰值大于2**(n-1)-1
将被返回为负值。下面给出了一个带有解决方法的示例。- 参数:
- aarray_like
输入值。
- axisNone 或 int 或 int 元组,可选
查找峰值的轴。默认情况下,将数组展平。axis 可以为负数,在这种情况下,它从最后一个轴到第一个轴计数。
版本 1.15.0 中的新增功能。
如果这是一个 int 元组,则将对多个轴执行降维,而不是像以前那样对单个轴或所有轴执行降维。
- outarray_like
放置结果的备用输出数组。它必须具有与预期输出相同的形状和缓冲区长度,但如果需要,输出值的类型将被强制转换。
- keepdimsbool,可选
如果设置为 True,则将被约简的轴保留在结果中,作为大小为一的维度。使用此选项,结果将针对输入数组正确广播。
如果传递了默认值,则keepdims 不会传递到
ptp
的ndarray
子类的子方法,但任何非默认值都会传递。如果子类的子方法没有实现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)