显然这是numpy的整数类型,溢出32位。通常,您可以使用以下命令将numpy配置为在这种情况下失败
np.seterr:
>>> import numpy as np>>> np.seterr(over='raise'){'divide': 'warn', 'invalid': 'warn', 'over': 'warn', 'under': 'ignore'}>>> np.int8(127) + np.int8(2)FloatingPointError: overflow encountered in byte_scalars但是,
sum已明确记录了行为“ 溢出时不会引发错误 ”,因此您在这里可能不走运。为了方便起见,使用numpy通常是性能的折衷!
但是,您可以手动为累加器指定dtype,如下所示:
>>> a = np.ones(129)>>> a.sum(dtype=np.int8) # will overflow-127>>> a.sum(dtype=np.int64) # no overflow129
观看票号593,因为这是一个未解决的问题,它可能由numpy开发人员修复。



