FloatingPointError 不是由 np.multiply.reduce 引发的,而是由单元素乘法引发的

问题描述

鉴于以下代码段,为什么 np.multiply.reduce 不会引发 FloatingPointErrorarr[0] * arr[1] 会引发?这是一个错误吗?

import numpy as np
import sys

print(np.__version__,sys.version)
# 1.20.3 3.9.5 (tags/v3.9.5:0a7dcbd,May  3 2021,17:27:52) [MSC v.1928 64 bit (AMD64)]


arr = np.array([-54588,1235845941])

# (1)
with np.errstate(all='raise'):
  result = np.multiply.reduce(arr)
# result is -1306909036 but there should have been a FloatingPointError,shouldn't it?


# (2)
with np.errstate(all='raise'):
  result = arr[0] * arr[1]
# ---------------------------------------------------------------------------
# FloatingPointError                        Traceback (most recent call last)
# <ipython-input-17-7a30d8c0933e> in <module>
#       1 with np.errstate(all='raise'):
# ----> 2   result = arr[0] * arr[1]
#       3

# FloatingPointError: overflow encountered in long_scalars

这与numpy-doesnt-throw-floatingpointerror-for-dot-product有关吗?​​

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)