numpy.ptp#
- numpy.ptp(a, axis=None, out=None, keepdims=<no value>)[source]#
沿著軸的值域 (最大值 - 最小值)。
此函數名稱源自於 'peak to peak'(峰對峰值)的縮寫。
警告
ptp
保留陣列的資料型別。這表示對於 n 位元有號整數(例如numpy.int8
、numpy.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)