numpy.ptp#

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

沿著軸的值域 (最大值 - 最小值)。

此函數名稱源自於 'peak to peak'(峰對峰值)的縮寫。

警告

ptp 保留陣列的資料型別。這表示對於 n 位元有號整數(例如 numpy.int8numpy.int16 等)的輸入,傳回值也會是 n 位元有號整數。在這種情況下,大於 2**(n-1)-1 的峰對峰值將會以負值傳回。下方範例展示了一個解決方法。

參數:
aarray_like(類陣列)

輸入值。

axisNone、整數或整數元組,選用

尋找峰值的軸。預設情況下,陣列會被展平。axis 可以是負數,在這種情況下,它會從最後一個軸數到第一個軸。如果這是整數元組,則會在多個軸上執行縮減,而不是像之前那樣在單個軸或所有軸上執行。

outarray_like(類陣列)

用於放置結果的替代輸出陣列。它必須具有與預期輸出相同的形狀和緩衝區長度,但必要時會轉換輸出值的型別。

keepdims布林值,選用

如果設定為 True,則縮減的軸會保留在結果中,作為大小為 1 的維度。使用此選項,結果將會針對輸入陣列正確廣播。

如果傳遞預設值,則 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)