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数组和数据类型的列表

某个操作的操作数,需要其结果类型。

返回:
outdtype

结果类型。

备注

使用的具体算法如下。

类别是通过首先检查布尔值、整数 (int/uint) 或浮点数 (float/complex) 中哪种类型是所有数组和标量的最大类型来确定的。

如果只有标量,或者标量的最大类别高于数组的最大类别,则使用 promote_types 将数据类型组合起来以生成返回值。

否则,对每个标量调用 min_scalar_type,并将得到的数据类型与 promote_types 组合起来以生成返回值。

对于具有相同位数的类型,整数集不是无符号整数集的子集,这在 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')