Python 我如何使用Numba@矢量化“;具有结构化Numpy阵列的ufunc?

Python 我如何使用Numba@矢量化“;具有结构化Numpy阵列的ufunc?,python,numpy,vector,numba,structured-array,Python,Numpy,Vector,Numba,Structured Array,我无法让矢量化的ufunc运行。常规@njit工作正常,这表明矢量化装饰器与njit相同。我现在运行的是Windows10,如果这有区别的话 演示程序如下。从下面的输出中,我们可以看到njit函数运行时没有事件,矢量化函数存在类型错误 导入系统 进口numpy 进口麻木 Structured=numpy.dtype([((“a”,numpy.int32),(“b”,numpy.float64)]) numba\u dtype=numba.from\u dtype(结构化) @numba.njit

我无法让矢量化的ufunc运行。常规@njit工作正常,这表明矢量化装饰器与njit相同。我现在运行的是Windows10,如果这有区别的话

演示程序如下。从下面的输出中,我们可以看到njit函数运行时没有事件,矢量化函数存在类型错误

导入系统 进口numpy 进口麻木 Structured=numpy.dtype([((“a”,numpy.int32),(“b”,numpy.float64)]) numba\u dtype=numba.from\u dtype(结构化) @numba.njit([numba.float64(numba\u dtype)]) def jitted(x): x['b']=17.5 返回18。 @numba.vectorize([numba.float64(numba\u dtype)],target=“cpu”,nopython=True) def矢量化(x): x['b']=17.5 返回12.1 打印('python version=',sys.implementation.version) 打印('numpy version=',numpy.\uuuu version\uuuuuu) 打印('numba version=',numba.\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu版本) 对于numpy.empty((3,),dtype=Structured)中的结构: 打印(jitted(结构)) 打印(矢量化(numpy.empty((3,),dtype=Structured))) 输出是

python version=sys.version\u info(主版本=3,次版本=7,微版本=1,releaselevel='final',序列号=0)
numpy版本=1.17.3
numba版本=0.48.0
18.0
18.0
18.0
回溯(最后一次调用):文件“scratch.py”,第49行,在
打印(矢量化(numpy.empty((3,),dtype=Structured))类型错误:输入类型不支持ufunc“矢量化”,并且无法根据强制转换规则“安全”将输入安全强制为任何支持的类型


它看起来不受支持,已经转换成了一个

我没有使用这个
numba.vectorize
,但是文档说它创建了一个
ufunc
(类似)函数
ufunc
返回一个新数组;它们没有在适当的地方运行。我意识到这只是一个测试函数,但是如果使用
x=np.empty(3,),dtype=Structured)
x['b']=17.5
,没有
numba
,就可以正常工作。我无法使用
矢量化和这个dtype。我不知道有任何
numpy.ufunc
可以处理结构化数据类型。你可能需要退后一步,解释一下你为什么需要这个。你的目标是什么?提到支持Numpy结构化标量,以及支持类型的Numpy数组。此外,我在报告中没有看到相反的内容。我目前的目标是找出如何让这个例子起作用,或者理解为什么它不起作用。我正在探索其他方法,但向量化结构化数组是这个特定问题的研究主题。问题可能是
numpy在
ufunc
中自己处理结构化数据类型。例如,我在编写自己的ufunc时发现了这一部分:
numba
可能无法处理所需的详细信息。我认为您可能是正确的。。。我在github开了一个网站。我看看那边有没有反应。