numpy.result_type#
- numpy.result_type(*arrays_and_dtypes)#
傳回將 NumPy 類型提升規則應用於引數後產生的類型。
NumPy 中的類型提升運作方式與 C++ 等語言中的規則類似,但略有差異。當同時使用純量和陣列時,陣列的類型優先,並會考量純量的實際值。
例如,計算 3*a,其中 a 是 32 位元浮點數的陣列,直觀上應產生 32 位元浮點數輸出。如果 3 是 32 位元整數,NumPy 規則指出它無法無損地轉換為 32 位元浮點數,因此應為 64 位元浮點數的結果類型。透過檢查常數「3」的值,我們看到它適合 8 位元整數,可以無損地轉換為 32 位元浮點數。
- 參數:
- arrays_and_dtypes陣列和 dtype 的列表
需要結果類型的某些運算的運算元。
- 傳回:
- outdtype
結果類型。
另請參閱
註解
使用的具體演算法如下。
類別的判斷方式是先檢查所有陣列和純量的最大種類為何者:布林值、整數 (int/uint) 或浮點數 (float/complex)。
如果只有純量,或純量的最大類別高於陣列的最大類別,則資料類型會與
promote_types
結合以產生傳回值。否則,會對每個純量呼叫
min_scalar_type
,並且所有產生的資料類型都會與promote_types
結合以產生傳回值。對於具有相同位元數的類型,int 值集合並非 uint 值集合的子集,這並未反映在
min_scalar_type
中,但在result_type
中作為特殊情況處理。範例
>>> import numpy as np >>> np.result_type(3, np.arange(7, dtype='i1')) dtype('int8')
>>> np.result_type('i4', 'c8') dtype('complex128')
>>> np.result_type(3.0, -2) dtype('float64')