在numba jitted nopython函数内部,我需要使用另一个数组内部的值对数组进行索引。这两个数组都是numpy数组浮点数。
例如
@numba.jit("void(f8[:], f8[:], f8[:])", nopython=True)
def need_a_cast(sources, indices, destinations):
for i in range(indices.size):
destinations[i] = sources[indices[i]]
我的代码不同,但是让我们假设这个愚蠢的示例可以重现该问题(即,我不能拥有类型为int的索引)。 AFAIK,我不能在nopython jit函数内部使用int(indices [i])或indexs [i] .astype(“int”)。
我该怎么做呢?
最佳答案
至少使用numba 0.24,您可以执行简单的转换:
import numpy as np
import numba as nb
@nb.jit(nopython=True)
def need_a_cast(sources, indices, destinations):
for i in range(indices.size):
destinations[i] = sources[int(indices[i])]
sources = np.arange(10, dtype=np.float64)
indices = np.arange(10, dtype=np.float64)
np.random.shuffle(indices)
destinations = np.empty_like(sources)
print indices
need_a_cast(sources, indices, destinations)
print destinations
# Result
# [ 3. 2. 8. 1. 5. 6. 9. 4. 0. 7.]
# [ 3. 2. 8. 1. 5. 6. 9. 4. 0. 7.]
关于python - 如何在nopython模式下将浮点numpy数组值转换为numba jitted函数中的int,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36050578/