numpy.frexp#

numpy.frexp(x, [out1, out2, ]/, [out=(None, None), ]*, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature]) = <ufunc 'frexp'>#

將 x 的元素分解為假數和二的指數。

傳回 (mantissa, exponent),其中 x = mantissa * 2**exponent。假數落在開區間 (-1, 1) 內,而二的指數為帶正負號的整數。

參數:
xarray_like

要分解的數字陣列。

out1ndarray,選用

假數的輸出陣列。必須與 x 具有相同的形狀。

out2ndarray,選用

指數的輸出陣列。必須與 x 具有相同的形狀。

outndarray、None 或 ndarray 和 None 的元組,選用

儲存結果的位置。如果提供,則必須具有輸入廣播到的形狀。如果未提供或為 None,則會傳回新配置的陣列。元組(僅能作為關鍵字引數)的長度必須等於輸出數。

wherearray_like,選用

此條件會廣播到輸入上。在條件為 True 的位置,out 陣列將設定為 ufunc 結果。在其他位置,out 陣列將保留其原始值。請注意,如果透過預設 out=None 建立未初始化的 out 陣列,則其中條件為 False 的位置將保持未初始化。

**kwargs

對於其他僅限關鍵字引數,請參閱 ufunc 文件

傳回:
mantissandarray

介於 -1 和 1 之間的浮點值。如果 x 是純量,則為純量。

exponentndarray

2 的整數指數。如果 x 是純量,則為純量。

另請參閱

ldexp

計算 y = x1 * 2**x2frexp 的反函數。

註解

不支援複數 dtype,它們會引發 TypeError。

範例

>>> import numpy as np
>>> x = np.arange(9)
>>> y1, y2 = np.frexp(x)
>>> y1
array([ 0.   ,  0.5  ,  0.5  ,  0.75 ,  0.5  ,  0.625,  0.75 ,  0.875,
        0.5  ])
>>> y2
array([0, 1, 2, 2, 3, 3, 3, 3, 4], dtype=int32)
>>> y1 * 2**y2
array([ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.])