cupyx.GeneralizedUFunc#

class cupyx.GeneralizedUFunc(func, signature, **kwargs)[源代码][源代码]#

通过包装用户提供的具有签名的函数来创建一个广义的通用函数。

signature 决定了函数是消耗还是产生核心维度。给定输入数组 (*args) 中的剩余维度被视为循环维度,并且需要自然地相互广播。

参数:
  • func (callable) – 在输入数组(*args)上调用类似 func(*args, **kwargs) 的函数,返回一个数组或数组的元组。如果提供了多个维度不匹配的参数,则期望此函数以 NumPy 通用函数的方式对位置参数的轴进行矢量化(广播)。

  • signature (string) – 指定 func 消耗和生成的核心维度。根据 numpy.gufunc 签名的规范。

  • supports_batched (bool, optional) – 如果被包装的函数支持传递带有循环和核心维度的完整输入数组。默认为 False。维度将在 GUFunc 处理代码中进行迭代。

  • supports_out (bool, optional) – 如果被包装的函数支持 out 作为其关键字参数之一,则默认为 False

  • signatures (list of tuple of str) – 包含形式为 ‘ii->i’ 的字符串,其中 i 是 dtype 的字符。列表的每个元素都是一个元组,包含字符串和一个替代函数,当函数的输入可以按照此函数描述的方式进行转换时,将执行该替代函数。

  • name (str, optional) – GUFunc 对象的名称。如果未指定,则使用 func 的名称。

  • doc (str, optional) – GUFunc 对象的文档字符串。如果未指定,则使用 func.__doc__

方法

__call__(*args, **kwargs)[源代码]#

应用一个广义的 ufunc。

参数:
  • args – 输入参数。它们中的每一个都可以是 cupy.ndarray 对象或标量。输出参数可以省略,也可以通过 out 参数指定。

  • axes (List of tuples of int, optional) – 一个元组列表,包含广义ufunc应操作的轴的索引。例如,对于适用于矩阵乘法的签名 '(i,j),(j,k)->(i,k)' ,基本元素是二维矩阵,并且这些矩阵被认为是存储在每个参数的两个最后一个轴中。对应的axes关键字将是 [(-2, -1), (-2, -1), (-2, -1)]。为了简单起见,对于操作一维数组(向量)的广义ufuncs,可以接受单个整数而不是单元素元组,并且对于所有输出都是标量的广义ufuncs,可以省略输出元组。

  • axis (int, optional) – 一个泛型ufunc应操作的单一轴。这是对于那些在单一共享核心维度上操作的ufunc的快捷方式,相当于为每个单一核心维度参数传递带有(axis,)条目的轴,并为所有其他参数传递``()``。例如,对于签名``’(i),(i)->()’,它等同于传递``axes=[(axis,), (axis,), ()]

  • keepdims (bool, optional) – 如果设置为 True,被缩减的轴将作为大小为一的维度保留在结果中,以便结果能正确地与输入进行广播。此选项只能用于操作在所有输入具有相同数量的核心维度且输出没有核心维度的广义 ufuncs,即具有类似 '(i),(i)->()''(m,m)->()' 签名的 ufuncs。如果使用此选项,可以使用 axes 和 axis 控制输出中维度的位置。

  • casting (str, optional) – 提供了一种策略,用于规定允许的类型转换。默认为 'same_kind'

  • dtype (dtype, optional) – 覆盖计算和输出数组的dtype。类似于签名。

  • signature (str or tuple of dtype, optional) – 数据类型、数据类型元组或特殊签名字符串,指示ufunc的输入和输出类型。此参数允许您在``__init__``方法的``signatures``关键字参数中注册时,为函数提供特定的签名。如果指定的循环对于ufunc不存在,则会引发TypeError。通常,通过将输入类型与可用类型进行比较并搜索具有所有输入可以安全转换的数据类型的循环,会自动找到合适的循环。此关键字参数允许您绕过该搜索并选择特定循环。

  • order (str, optional) – 指定输出数组的内存布局。默认为 'K''C' 表示输出应为 C 连续,'F' 表示 F 连续,'A' 表示如果输入是 F 连续且不是 C 连续,则为 F 连续,否则为 C 连续,'K' 表示尽可能匹配输入的元素顺序。

  • out (cupy.ndarray) – 输出数组。默认情况下,它会输出到新的数组。

返回:

输出数组或输出数组的元组。

__eq__(value, /)#

返回 self==value。

__ne__(value, /)#

返回 self!=value。

__lt__(value, /)#

返回 self<value。

__le__(value, /)#

返回 self<=value。

__gt__(value, /)#

返回 self>value。

__ge__(value, /)#

返回 self>=value。