我正在尝试使用Numba
和Numpy
进行数组索引的行为,我遇到了一些我不太了解的东西;所以我希望有人可以指出我正确的方向,这可能是一个非常简单的问题。下面是两个函数,它们都使用np.arange命令创建一个空数组。然后,我使用索引0,Numba
“追加”(试验各种方法来查看Numpy
和example[0] = 1
如何执行/中断)到数组。
使用Numba
的jit
函数运行没有错误,但Numpy
示例给出错误:
IndexError: index 0 is out of bounds for axis 0 with size 0
Numpy
错误是有道理的,但我不确定为什么启用Numba
的jit
允许操作没有错误。
import numba as nb
import numpy as np
@nb.jit()
def funcnumba():
'''
Add item to position 0 using Numba
'''
example = np.arange(0)
example[0] = 1
return example
def funcnumpy():
'''
Add item to position 0 using Numpy. This produces an error which makes sense
'''
example = np.arange(0)
example[0] = 1
return example
print(funcnumba())
print(funcnumpy())
见Numba documentation on arrays:
目前没有边界检查数组索引和切片(...)
这意味着在这种情况下你将写出数组的边界。因为它只是一个元素,你可能会幸运并逃脱它,但你也可以崩溃你的程序,或者更糟糕的是,默默地覆盖其他一些价值。有关它的讨论,请参阅issue #730。