Python Numba中未识别Numpy属性

Python Numba中未识别Numpy属性,python,numpy,scipy,jit,numba,Python,Numpy,Scipy,Jit,Numba,Numba为Python提供了JIT。在其文档中,它说“Numba的一个目标是与NumPy无缝集成。” 那么为什么不可能包含numpy的一些最简单的功能呢 import numpy as np from numba import * @jit(nopython=True) def testfun(x): y = np.size(x) return y x=np.array([1 ,2, 3],dtype=float) testfun(x) 当我运行这段代码时,我得到错误“Modul

Numba为Python提供了JIT。在其文档中,它说“Numba的一个目标是与NumPy无缝集成。”

那么为什么不可能包含numpy的一些最简单的功能呢

import numpy as np
from numba import *

@jit(nopython=True)
def testfun(x):
  y = np.size(x)
  return y

x=np.array([1 ,2, 3],dtype=float)
testfun(x)
当我运行这段代码时,我得到错误“Module类型的未知属性'size',这意味着无法识别属性'size'

Numba理解打给NumPy ufuncs的电话。我假设简单的numpy函数,如大小、形状、求和、重塑等都是UFUNC。当然,删除' (nopython=True)可以工作,但这会使pyobjects的运行变慢。

以下功能可以工作:

@nb.jit(nopython=True)
def testfun(x):
    y = x.size
    return y
某些属性是受支持的,但您应该查看相应的函数是:

有关numpy numba支持哪些部分的文档非常完整

以下工作:

@nb.jit(nopython=True)
def testfun(x):
    y = x.size
    return y
某些属性是受支持的,但您应该查看相应的函数是:


有关numpy numba支持哪些部分的文档非常完整

查看
np.size
的代码。它不是一个
ufunc
。它返回
x.size
x.shape(轴)
。它位于
fromnumeric.py
文件中,这表明它是旧的
numeric
包中的遗留代码。有许多
numpy
函数将操作委托给数组方法。请查看
np.size
的代码。它不是一个
ufunc
。它返回
x.size
x.shape(轴)
。它位于
fromnumeric.py
文件中,这表明它是旧的
numeric
包中的遗留代码。有很多
numpy
函数将操作委托给数组方法。太棒了!尽管我使用的是错误持续存在的其他函数(重塑、matmul…)。但是谢谢你的链接,它澄清了问题。太好了!尽管我使用的是错误持续存在的其他函数(重塑、matmul…)。但是谢谢你的链接,它澄清了问题。