numpy.ptp#

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

沿轴的值范围(最大值 - 最小值).

该函数的名称来自“峰峰值”的首字母缩写.

警告

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

参数:
aarray_like

输入值.

axisNone 或 int 或 int 元组,可选

沿其查找峰值的轴.默认情况下,展平数组. axis 可以是负数,在这种情况下,它从最后一个轴数到第一个轴.如果这是一个整数元组,则在多个轴上执行缩减,而不是像以前那样在单个轴或所有轴上执行缩减.

outarray_like

用于放置结果的备用输出数组.它必须具有与预期输出相同的形状和缓冲区长度,但如果需要,输出值的类型将被转换.

keepdimsbool, 可选

如果将其设置为 True,则缩减的轴将作为大小为 1 的维度保留在结果中.使用此选项,结果将针对输入数组正确广播.

如果传递默认值,则 keepdims 将不会传递给 ndarray 子类的 ptp 方法,但是任何非默认值都将被传递.如果子类的方法未实现 keepdims ,则会引发任何异常.

返回:
ptpndarray 或标量

给定数组的范围 - 如果数组是一维的,则为 scalar ,或者是一个包含沿给定轴的结果的新数组

示例

>>> 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)