python - numba 中零维数组的签名是什么

标签 python numpy jit signature numba

numba.jit() 允许输入类型签名,但我不知道零维数组的签名是什么。

例如:

numba.jit('void(float32, float32[:])')

表示函数返回为空,输入参数为 float32 标量和 float32 一维数组。

但是我想传递一个 0 维数组而不是标量。什么是类型签名?我尝试了明显的 float32[] 但它似乎不起作用。

如果您想知道如何在 numpy 中获取 0 维数组,您可以这样做:

a = numpy.array(2)

不同于

a = numpy.array([2])

后者是一维数组。

最佳答案

这就是使用 numba.types.Array 实现的方法:

import numba as nb
import numpy as np

#        |---------0d int array---------|
@nb.njit(nb.types.Array(nb.int64, 0, "C")())
def func():
    return np.array(2)

我在这里使用返回值将是一个 C 连续 int64 数组,具有 0 维度。根据需要调整这些。


根据我的经验,在 numba 中很少有显式类型函数的用例(参见 "Benefit and Limitations of Ahead-of-Time compilation")——编译时间除外,或者需要避免 numba 在编译新函数时使用已经推断出的类型。因此,就我个人而言,我不会使用这些签名。

关于python - numba 中零维数组的签名是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54994061/

相关文章:

python - 从使用 matplotlib 绘制的数据进行推断

c# - 了解 C# 中运行时代码生成的各种选项(Roslyn、CodeDom、Linq 表达式,...?)

c# - 发生异常 "System.InvalidProgramException: JIT Compiler encountered an internal limitation "

python - Odoo session 随机过期

python - 在之前的行中出现某个值后删除多行的最佳实践?

python - Python/numpy/pandas 中函数 f(x,y) 结果的矩阵

java - 更多方法是否意味着代码性能较差?

python - Numpy:索引和值的向量

python - 如何使用 Python pandas 有效地将每小时数据转换为一年中每一天的日期和时间?

java - 在 Java 中使用 SWIG 类型映射