numpy.result_type#

numpy.result_type(*arrays_and_dtypes)#

返回将NumPy类型提升规则应用于参数后产生的类型.

NumPy中的类型提升与C++等语言中的规则类似,但略有不同.当同时使用标量和数组时,数组的类型优先,并考虑标量的实际值.

例如,计算 3a,其中 a 是一个 32 位浮点数数组,直观上应该产生一个 32 位浮点数输出.如果 3 是一个 32 位整数,NumPy 规则表明它不能无损地转换为 32 位浮点数,因此结果类型应该是 64 位浮点数.通过检查常量 ‘3’ 的值,我们看到它适合 8 位整数,可以无损地转换为 32 位浮点数.

参数:
arrays_and_dtypes数组和 dtypes 的列表

一些需要结果类型的操作的操作数.

返回:
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')