numba 中零维数组的签名是什么
What is signature for a zero dimensional array in numba
numba.jit()
允许输入类型签名,但我不知道零维数组的签名是什么。
例如:
numba.jit('void(float32, float32[:])')
表示函数 return 无效,输入参数为 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 在应该编译时使用已经推断出的类型的情况一个新功能。所以,就我个人而言,我不会使用这些签名。
numba.jit()
允许输入类型签名,但我不知道零维数组的签名是什么。
例如:
numba.jit('void(float32, float32[:])')
表示函数 return 无效,输入参数为 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 在应该编译时使用已经推断出的类型的情况一个新功能。所以,就我个人而言,我不会使用这些签名。