numpy.result_type

原文:https://docs.scipy.org/doc/numpy/reference/generated/numpy.result_type.html

译者:飞龙 UsyiyiCN

校对:(虚位以待)

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:数组和dtypes的列表

需要结果类型的某些操作的操作数。

返回:

out:dtype

结果类型。

笔记

版本1.6.0中的新功能。

使用的具体算法如下。

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

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

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

int值集合不是具有相同位数的类型的uint值的子集,某些不在min_scalar_type中反映,但在result_type中作为特殊情况处理。

例子

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