Python 使用NumPy数组作为Numba TypedDict中的键

Python 使用NumPy数组作为Numba TypedDict中的键,python,numpy,numba,Python,Numpy,Numba,我试图修改一个类以使用Numba的@jitclass,这个类的一部分需要使用字典将NumPy数组映射到int值。我一直在使用数组的tobytes方法作为键,但Numba不支持这种方法。有没有一种兼容的方法可以使用NumPy数组为字典设置关键字?Numba中似乎也不支持数组的string方法。如果您的NumPy数组不更改内存地址,您可以根据指向其内存地址的指针生成一个键。请注意,这仅适用于在适当位置修改阵列的情况: >>将numpy作为np导入 >>>arr=np.arange(3) >>>啊 数

我试图修改一个类以使用Numba的
@jitclass
,这个类的一部分需要使用字典将NumPy数组映射到int值。我一直在使用数组的
tobytes
方法作为键,但Numba不支持这种方法。有没有一种兼容的方法可以使用NumPy数组为字典设置关键字?Numba中似乎也不支持数组的string方法。

如果您的NumPy数组不更改内存地址,您可以根据指向其内存地址的指针生成一个键。请注意,这仅适用于在适当位置修改阵列的情况:

>>将numpy作为np导入
>>>arr=np.arange(3)
>>>啊
数组([0,1,2])
>>>ptr,uu=arr.uuuu数组_uu接口uuu['data']
>>>ptr
140556718588416
>>>dct={ptr:arr}
>>>dct[ptr]
数组([0,1,2])
>>>arr+=10
>>>dct[ptr]
数组([10,11,12])
>>>arr[…]=0
>>>dct[ptr]
数组([0,0,0])
但是,如果实际更改阵列的内存位置,则会遇到错误:

arr=np.one\u like(arr) >>>啊 数组([1,1,1]) >>>dct[ptr]#哎呀! 数组([0,0,0])
如果您的NumPy数组不更改内存地址,您可以根据指向其内存地址的指针生成一个键。请注意,这仅适用于在适当位置修改阵列的情况:

>>将numpy作为np导入
>>>arr=np.arange(3)
>>>啊
数组([0,1,2])
>>>ptr,uu=arr.uuuu数组_uu接口uuu['data']
>>>ptr
140556718588416
>>>dct={ptr:arr}
>>>dct[ptr]
数组([0,1,2])
>>>arr+=10
>>>dct[ptr]
数组([10,11,12])
>>>arr[…]=0
>>>dct[ptr]
数组([0,0,0])
但是,如果实际更改阵列的内存位置,则会遇到错误:

arr=np.one\u like(arr) >>>啊 数组([1,1,1]) >>>dct[ptr]#哎呀! 数组([0,0,0])
如果没有那么多信息,我建议首先将数组映射到中间字典,如下所示:

list_of_arrays = [arr1, arr2, arr3]
intermediate_dict = {x:y for x,y in enumerate(list_of_arrays)}

然后,在您完成后,将此词典与生成的词典相结合,以获得所需的信息。

如果没有那么多信息,我建议您首先将数组映射到中间词典,如下所示:

list_of_arrays = [arr1, arr2, arr3]
intermediate_dict = {x:y for x,y in enumerate(list_of_arrays)}

然后,在你完成后,将此词典与生成的词典结合起来,以获得你需要的信息。

向我们展示你尝试过的代码,Numba拒绝了这些代码。很遗憾,我没有可以发布的相关代码,这些代码比原始文章更能说明问题,在一些事情上有点迷茫,想告诉我们你尝试过的代码,但Numba拒绝了。我没有相关的代码可以发布,比原始的文章更能说明问题。不幸的是,在一些事情上有点迷茫,想尝试一下