numpy.ufunc.resolve_dtypes #
方法
- ufunc。resolve_dtypes ( dtypes , * ,签名= None , casting = None , duction = False ) #
查找 NumPy 将用于操作的数据类型。输入和输出数据类型都会返回,并且可能与提供的不同。
笔记
由于未提供任何实际值,因此该函数始终应用 NEP 50 规则。 Python 类型
int
、float
、complex
因而表现较弱,应该传递给“无类型”Python 输入。- 参数:
- dtypes dtypes、None 或文字 int、float、complex 的元组
每个操作数的输入数据类型。输出操作数可以为 None,表示必须找到 dtype。
- DTypes 或 None 的签名元组,可选
如果给定,则强制执行特定操作数的精确 DType(类)。 ufunc
dtype
参数相当于传递一个仅设置了输出数据类型的元组。- 强制转换{'no', 'equiv', 'safe', 'same_kind', 'unsafe'},可选
需要铸造时的铸造模式。这与 ufunc 调用转换模式相同。
- 归约布尔值
如果给出,则解析假定正在发生归约操作,这会稍微改变提升和类型解析规则。
dtypes
通常类似于 缩减(第一个输入也是输出)。(None, np.dtype("i2"), None)
笔记
默认转换模式是“same_kind”,但是,从 NumPy 1.24 开始,NumPy 使用“unsafe”进行缩减。
- 返回:
- dtypes dtypes 的元组
NumPy 将用于计算的数据类型。请注意,数据类型可能与传入的数据类型不匹配(需要进行强制转换)。
也可以看看
numpy.ufunc._resolve_dtypes_and_context
与此类似的函数,但返回附加信息,可以访问 NumPy 的核心 C 功能。
例子
该 API 需要传递数据类型,为方便起见定义它们:
>>> int32 = np.dtype("int32") >>> float32 = np.dtype("float32")
典型的 ufunc 调用不传递输出数据类型。 np.add有两个输入和一个输出,因此将输出保留为
None
(未提供):>>> np.add.resolve_dtypes((int32, float32, None)) (dtype('float64'), dtype('float64'), dtype('float64'))
找到的循环对所有操作数(包括输出)使用“float64”,第一个输入将被强制转换。
resolve_dtypes
int
通过传递、float
或 来支持 Python 标量的“弱”处理complex
:>>> np.add.resolve_dtypes((float32, float, None)) (dtype('float32'), dtype('float32'), dtype('float32'))
Python 的行为与 ufunc 调用中的
float
Python 值类似。0.0
(详情请参阅NEP 50。 )