numpy.ma.ptp#
- ma.ptp(obj, axis=None, out=None, fill_value=None, keepdims=<no value>)[原始碼]#
傳回沿給定維度的(最大值 - 最小值)(即峰對峰值)。
警告
ptp
保留陣列的資料類型。這表示位元數為 n 的帶符號整數(例如 np.int8、np.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)