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')