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)