numpy.ufunc.resolve_dtypes#
方法
- ufunc.resolve_dtypes(dtypes, *, signature=None, casting=None, reduction=False)#
查找 NumPy 将用于操作的数据类型.返回输入和输出数据类型,可能与提供的数据类型不同.
备注
由于没有提供任何实际值,此函数始终应用 NEP 50 规则.因此,Python 类型
int
、float
和complex
表现较弱,应传递给”无类型”的 Python 输入.- 参数:
- dtypesdtypes 的元组、None 或字面量 int、float、complex
每个操作数的输入数据类型.输出操作数可以是 None,表示必须找到数据类型.
- signatureDTypes 或 None 的元组,可选
如果指定,则强制特定操作数的精确 DType(类).ufunc
dtype
参数等同于传递一个仅设置了输出 dtypes 的元组.- casting{‘no’, ‘equiv’, ‘safe’, ‘same_kind’, ‘unsafe’}, 可选
在需要转换时的转换模式.这与ufunc调用转换模式相同.
- reduction布尔
如果给出,解析假设正在发生一个减少操作,这会稍微改变提升和类型解析规则.`dtypes` 通常类似于
(None, np.dtype("i2"), None)
用于减少操作(第一个输入也是输出).备注
默认的转换模式是”same_kind”,然而,从 NumPy 1.24 开始,NumPy 在归约操作中使用”unsafe”.
- 返回:
- dtypesdtypes 的元组
NumPy 在进行计算时会使用的数据类型.注意,数据类型可能与传入的不匹配(需要进行类型转换).
示例
此 API 需要传递 dtypes,为方便起见定义它们:
>>> import numpy as np >>> int32 = np.dtype("int32") >>> float32 = np.dtype("float32")
典型的 ufunc 调用不会传递输出 dtype.`numpy.add` 有两个输入和一个输出,因此将输出保留为 ``None``(未提供):
>>> np.add.resolve_dtypes((int32, float32, None)) (dtype('float64'), dtype('float64'), dtype('float64'))
找到的循环使用”float64”作为所有操作数(包括输出),第一个输入将被转换.
resolve_dtypes
通过传递int
、float
或complex
支持对 Python 标量的”弱”处理:>>> np.add.resolve_dtypes((float32, float, None)) (dtype('float32'), dtype('float32'), dtype('float32'))
在ufunc调用中,Python的``float``行为类似于Python值``0.0``.(详见 NEP 50.)