numpy.ma.MaskedArray.ptp#

方法

ma.MaskedArray.ptp(axis=None, out=None, fill_value=None, keepdims=False)[原始碼]#

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

警告

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

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

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

out{None, array_like},選用

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

fill_value純量或 None,選用

用於填補遮罩值的值。

keepdimsbool,選用

如果設定為 True,則縮減的軸會在結果中保留為大小為一的維度。使用此選項,結果將會正確地與陣列進行廣播。

傳回:
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)