TypeError: can't unbox heterogeneous list: int64 != float64
使用 numba 加速程序的时候,可能会报这个错误,一般的原因是因为某个list 里面的元素存在多种数据类型,比如同时存在 int , float 类型的数据,就会导致这个错误;
解决方法:
打开调试模式,看看每个变量里面的元素类型,把存在多种数据类型的变量改为只包含一种数据类型,就可以解决这个问题;
# jit 必须要一个数据里面的数据类型是一样的,不然就会报错
@numba.jit()
def voxel_2_point(result_all, leaf, vis_point_range):
point_up = []
for i in range(result_all.shape[0]):
for j in range(result_all.shape[1]):
for k in range(result_all.shape[2]):
if result_all[i, j, k] > 0:
# cx = np.floor((p[0] - vis_point_range[0]) / leafsize)
# cy = np.floor((p[1] - vis_point_range[1]) / leafsize)
# cz = np.floor((p[2] - vis_point_range[2]) / leafsize)
cx = i * leaf + vis_point_range[0]
我这里报错是因为 vis_point_range 是 [1, 2.0, 3.0] , 前面第一个元素是int , 后面两个都是float 类型,就报错了,把它改为 【1.0, 2.0, 3.0 】 就不会报错了。