Python Numba:将numpy数组转换为可哈希对象
在numbaPython Numba:将numpy数组转换为可哈希对象,python,numba,Python,Numba,在numba.jit(nopython=True)函数中,我正在计算数千个numpy数组(1-D,整数数据类型),并将它们附加到列表中。问题是有些数组看起来相等,但我不需要重复。因此,我需要一种有效的方法来检查列表中是否已经存在新数组 在python中,可以这样做: import numpy as np import numba as nb # @nb.jit(nopython=True) def foo(n): uniques = [] uniques_set = set(
.jit(nopython=True)
函数中,我正在计算数千个numpy数组(1-D,整数数据类型),并将它们附加到列表中。问题是有些数组看起来相等,但我不需要重复。因此,我需要一种有效的方法来检查列表中是否已经存在新数组
在python中,可以这样做:
import numpy as np
import numba as nb
# @nb.jit(nopython=True)
def foo(n):
uniques = []
uniques_set = set()
for _ in range(n):
arr = np.random.randint(0, 2, 2)
arr_hashable = make_hashable(arr)
if not arr_hashable in uniques_set:
uniques_set.add(arr_hashable)
uniques.append(arr)
return uniques
我尝试了两种方法来解决这个问题:
def make_hashable(arr):
return tuple(arr)
但不幸的是,直接元组构造在nopython中不能以这种方式工作
模式我也试过这样做:
def make_hashable(arr):
res = ()
for n in arr:
res += (n,)
return res
还有其他我能想到的类似的解决办法,但都失败了
nopython模式和TypeErrordef make_hashable(arr):
return arr.tostring()
还尝试了所有可能的方法将数组转换为字符串,但看起来像麻木
目前不支持字符串转换