如何使用numba创建给定类型的numpy数组

时间:2015-07-07 10:28:24

标签: python python-3.x numba

因为Numba 0.19能够在nopython模式下显式创建numpy数组。如何创建给定类型的数组?

from numba import jit
import numpy as np

@jit(nopython=True)
def f():
    a = np.zeros(5, dtype = np.int)

上述代码失败,出现以下错误

TypingError: Failed at nopython (nopython frontend)
Undeclared Function(<built-in function zeros>)(int32, Function(<class 'int'>))
File "<ipython-input-4-3169be7a8201>", line 6

2 个答案:

答案 0 :(得分:4)

您应该使用numba dtypes而不是numpy

import numba
import numpy as np

@numba.njit
def f():
    a = np.zeros(5, dtype=numba.int32)
    return a

In [8]: f()
Out[8]: array([0, 0, 0, 0, 0], dtype=int32)

答案 1 :(得分:1)

在python 2.7中,似乎np.int确实有效。

至于来自dlenz的解决方法,我想指出使用np.int32确实也能正常工作......如果你想在某些时候删除numba.njit,那么代码可以不加修改地工作无论出于何种原因。