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

问题描述 投票:3回答:1

numba.jit()允许输入类型签名,但我无法弄清楚零维数组的签名是什么。

例如:

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

表示函数return为void,输入参数为float32标量和float32 1-D数组。

但是我想要在0维数组中传递的是标量而不是标量。什么是型号签名?我尝试了明显的float32[],但似乎没有用。

如果你想知道如何在numpy中获得一个0-D数组,你可以这样做:

a = numpy.array(2)

这与...不同

a = numpy.array([2])

后者是一维阵列。

python numpy jit signature numba
1个回答
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-contiguous int64数组与0维度。根据需要调整这些。


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

© www.soinside.com 2019 - 2024. All rights reserved.