dask.array.ptp

dask.array.ptp

dask.array.ptp(a, axis=None)[源代码]

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

此文档字符串是从 numpy.ptp 复制的。

Dask 版本可能存在一些不一致性。

函数名称来源于’峰到峰’的缩写。

警告

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

参数
aarray_like

输入值。

None 或 int 或 int 的元组,可选

沿哪个轴寻找峰值。默认情况下,展平数组。axis 可以是负数,在这种情况下,它从最后一个轴计数到第一个轴。

1.15.0 新版功能.

如果这是一个整数的元组,则会在多个轴上执行缩减操作,而不是像之前那样在单个轴或所有轴上执行。

array_like (Dask 中不支持)

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

keepdimsbool, 可选 (Dask 不支持)

如果设置为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)