索引空数组,Numba 与 Numpy
Indexing empty array, Numba vs. Numpy
我正在试验 Numba
与 Numpy
的数组索引行为,我遇到了一些我不太明白的事情;所以我希望有人能为我指出正确的方向,这可能是一个非常简单的问题。下面是两个函数,它们都使用 np.arange 命令创建一个空数组。然后我 "append"(尝试各种方法来查看 Numba
和 Numpy
perform/break)如何使用索引为 0 的数组,example[0] = 1
。
带有jit
的Numba
函数运行没有错误,但是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:
Currently there are no bounds checking for array indexing and slicing (...)
这意味着在这种情况下您将写出数组的边界。由于它只是一个元素,您可能幸运地摆脱了它,但您也可能使程序崩溃,或者更糟的是,悄悄地覆盖其他一些值。有关它的讨论,请参阅 issue #730。
我正在试验 Numba
与 Numpy
的数组索引行为,我遇到了一些我不太明白的事情;所以我希望有人能为我指出正确的方向,这可能是一个非常简单的问题。下面是两个函数,它们都使用 np.arange 命令创建一个空数组。然后我 "append"(尝试各种方法来查看 Numba
和 Numpy
perform/break)如何使用索引为 0 的数组,example[0] = 1
。
带有jit
的Numba
函数运行没有错误,但是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:
Currently there are no bounds checking for array indexing and slicing (...)
这意味着在这种情况下您将写出数组的边界。由于它只是一个元素,您可能幸运地摆脱了它,但您也可能使程序崩溃,或者更糟的是,悄悄地覆盖其他一些值。有关它的讨论,请参阅 issue #730。