numpy.ma.ptp#

ma.ptp(obj, axis=None, out=None, fill_value=None, keepdims=<no value>)[原始碼]#

傳回沿給定維度的(最大值 - 最小值)(即峰對峰值)。

警告

ptp 保留陣列的資料類型。這表示位元數為 n 的帶符號整數(例如 np.int8np.int16 等)的輸入的傳回值也是位元數為 n 的帶符號整數。在這種情況下,大於 2**(n-1)-1 的峰對峰值將以負值傳回。下面顯示了一個包含解決方法的範例。

參數:
axis{None, int},選用

沿著該軸尋找峰值。如果為 None(預設值),則使用展平的陣列。

out{None, 類陣列},選用

在其中放置結果的替代輸出陣列。它必須具有與預期輸出相同的形狀和緩衝區長度,但如有必要,將會轉換類型。

fill_value純量或 None,選用

用於填補遮罩值的值。

keepdimsbool,選用

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

傳回值:
ptpndarray。

除非指定了 out,否則為保存結果的新陣列,在這種情況下,傳回對 out 的參考。

範例

>>> import numpy as np
>>> x = np.ma.MaskedArray([[4, 9, 2, 10],
...                        [6, 9, 7, 12]])
>>> x.ptp(axis=1)
masked_array(data=[8, 6],
             mask=False,
       fill_value=999999)
>>> x.ptp(axis=0)
masked_array(data=[2, 0, 5, 2],
             mask=False,
       fill_value=999999)
>>> x.ptp()
10

此範例顯示當輸入是帶符號整數陣列時,可能會傳回負值。

>>> y = np.ma.MaskedArray([[1, 127],
...                        [0, 127],
...                        [-1, 127],
...                        [-2, 127]], dtype=np.int8)
>>> y.ptp(axis=1)
masked_array(data=[ 126,  127, -128, -127],
             mask=False,
       fill_value=np.int64(999999),
            dtype=int8)

一種解決方法是使用 view() 方法將結果檢視為具有相同位元寬度的無符號整數

>>> y.ptp(axis=1).view(np.uint8)
masked_array(data=[126, 127, 128, 129],
             mask=False,
       fill_value=np.uint64(999999),
            dtype=uint8)