使用numba要注意的越界问题
生活随笔
收集整理的這篇文章主要介紹了
使用numba要注意的越界问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在Python中使用numba可以同時兼顧到C語言的速度以及python語言簡便靈活。
但是要注意在numba修飾的函數中出現了數組越界的情況,有可能運行時不會報錯,從而導致更加難以發現的錯誤。這是由于底層的C語言一直以來的一個“弊病”。
以下是一個簡單的例子
import numpy as np import numba@numba.jit def sum1(a: np.ndarray):rlt = 0for i in range(a.shape[0]+1):rlt = rlt + a[i]return rltdef sum2(a: np.ndarray):rlt = 0for i in range(a.shape[0]+1):rlt = rlt + a[i]return rltarr = np.array([1,2,3,4]) print("sum1: ", sum1(arr))print("sum2: ", sum2(arr))結果
sum1: 1278955642
IndexError Traceback (most recent call last)
in
21 print("sum1: ", sum1(arr))
22
—> 23 print("sum2: ", sum2(arr))
in sum2(a)
14 rlt = 0
15 for i in range(a.shape[0]+1):
—> 16 rlt = rlt + a[i]
17 return rlt
18
IndexError: index 4 is out of bounds for axis 0 with size 4
sum1和sum2除了是否numba修飾外,完全相同。可以看到sum1正常返回,但是返回了一個錯的值; sum2由于是由純python寫的,運行時會進行各種檢查,因此報錯了
總結
以上是生活随笔為你收集整理的使用numba要注意的越界问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenGL坐标系转化之投影坐标系
- 下一篇: Introduction to 3D G