dask.array.result_type
dask.array.result_type¶
- dask.array.result_type(*arrays_and_dtypes)[源代码]¶
此文档字符串是从 numpy.result_type 复制的。
Dask 版本可能存在一些不一致性。
返回根据NumPy类型提升规则应用于参数后得到的结果类型。
NumPy 中的类型提升与 C++ 等语言的规则类似,但有一些细微的差别。当同时使用标量和数组时,数组的类型优先,并且会考虑标量的实际值。
例如,计算 3*a,其中 a 是一个 32 位浮点数的数组,直观上应该得到一个 32 位浮点数的输出。如果 3 是一个 32 位整数,NumPy 规则表明它不能无损地转换为 32 位浮点数,因此结果类型应该是 64 位浮点数。通过检查常量 ‘3’ 的值,我们看到它适合一个 8 位整数,可以无损地转换为 32 位浮点数。
- 参数
- 数组和数据类型数组和数据类型的列表
某些操作的操作数,其结果类型是必需的。
- 返回
- 出dtype
结果类型。
参见
dtype
,promote_types
,min_scalar_type
,can_cast
注释
1.6.0 新版功能.
使用的具体算法如下。
类别的确定首先检查所有数组和标量的最大种类是布尔型、整型(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')