Numpy矩阵与Numba一起运行

时间:2018-02-20 20:11:42

标签: python python-3.x numpy numba

我是Python编程的新手。  我有以下Python 3.6代码:

import numpy as np
from numba import jit
@jit(nopython=True)
def genarray(rows, cols):
    """return a new matrix"""
    return np.zeros([rows, cols], float)
L1 = 5
C1 = 5
B = genarray(L1, C1)
print(type(B))

编译时,我得到以下错误:

TypingError: >Invalid usage of Function(<built-in function zeros>) with parameters (list(int64), Function(<class 'float'>))

 * parameterized

我尝试使用np.float, np.float64并获得错误。代码在没有nopython=true选项的情况下编译正常。

如何用矩阵解决错误?因为使用vector,代码编译好了 使用nopython=true选项。

1 个答案:

答案 0 :(得分:2)

我认为担心numba的担忧可能不是最富有成效的道路。也就是说,您可以通过将元组而不是列表传递给np.zeros并使用np.float64来实现目标:

>>> @jit(nopython=True)
... def genarray(rows, cols):
...     """return a new matrix"""
...     return np.zeros((rows, cols), np.float64)
... 
>>> L1 = 5
>>> C1 = 5
>>> B = genarray(L1, C1)
>>> print(type(B))
<class 'numpy.ndarray'>
>>> B
array([[ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.]])

如果这看起来很挑剔,那么你是对的:但这是目前使用numba的权衡。