从numbtoria获取多个值返回

2024-04-25 09:56:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道是否有可能从用编译的函数中获取多个返回值矢量化. 在

我将向量化装饰器用于一个函数,该函数接受一系列参数,执行和迭代根查找例程,然后返回解决方案。矢量化函数工作得很好,因为所有参数和返回的结果都是相同的维。问题是,解决方案并不总是一致的。我想返回一个True/False数组,它告诉我解决方案是否收敛。在

我知道这可以用guvectorize来实现,但是vectorize的标量语法很好,而且由于我所有的数组都是相同的维,所以需要引入guvectorize似乎很愚蠢。有人知道是否有可能从矢量化编译函数?在


Tags: 函数falsetrue参数语法装饰数组解决方案
1条回答
网友
1楼 · 发布于 2024-04-25 09:56:12

快速的答案当然是。。。没有

从numba文件中:

While numba.vectorize() will produce a simple ufunc whose core functionality (the function you are decorating) operates on scalar operands and returns a scalar value...

{1}仍然可以用这个函数来处理},但是如果这个函数是以一个向量的方式编译的,那么这个函数将返回一个向量。在下面的示例中,函数签名在签名中只定义了一个维度,但是如果它是多维的,它将很好地对整个数组进行操作。在

我知道我在问题中说过,“我知道我可以用guvectorize来实现这个功能”,但实际上我并不理解这个事实,即函数将在一个未指定维度的数组上工作,本质上是一个扁平数组。我认为您需要精确地指定维度,但我还没有看到这种行为的文档(尽管可能是这样)。在

from numba import guvectorize, float64
import numpy as np

ones = np.ones((3, 3))
twos = ones * 2

@guvectorize(
    [(float64[:], float64[:], float64[:], float64[:])],
    "(n),(n)->(n),(n)",
    nopython=True)
def add_guvectorize(a, b, c, d):
    for i in range(len(a)):
        c[i] = a[i] + b[i]
        d[i] = a[i] + c[i]
threes, fours = add_guvectorize(ones, twos)
print(threes)
print(fours)

印刷品:

^{pr2}$

相关问题 更多 >