gpt4 book ai didi

python - Numpy seterr 未检测到溢出

转载 作者:行者123 更新时间:2023-12-03 08:28:08 27 4
gpt4 key购买 nike

根据文档( https://numpy.org/doc/stable/reference/generated/numpy.seterr.html ),numpy.seterr 应该能够检测溢出和其他数字错误,但我不明白为什么我所做的不起作用。以下内容应该引发异常,但事实并非如此。

import sys
import numpy as np


def main():
np.seterr(all='raise')
x = np.array([1, 2, 3, 4], dtype=np.uint8)
for _ in range(9):
print(x)
x *= 2


if __name__ == '__main__':
print(f'{sys.version=}')
print(f'{np.version.full_version=}')
main()


输出

sys.version='3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 23:03:10) [MSC v.1916 64 bit (AMD64)]'
np.version.full_version='1.19.3'
[1 2 3 4]
[2 4 6 8]
[ 4 8 12 16]
[ 8 16 24 32]
[16 32 48 64]
[ 32 64 96 128]
[ 64 128 192 0]
[128 0 128 0]
[0 0 0 0]

我尝试过使用 raisewarnprint 以及数据类型 int8 的类似示例, uint8int16uint16、...、uint64 我无法让这个东西引发永远错误,我做错了什么?如果这很重要的话,我正在使用 Windows 10。

最佳答案

这不是你。使用 np.int8(100) 等标量对象检测到溢出警告/错误,但不检测相同 dtype 的数组。这通常没有用,但显然开发人员认为核心数组操作的溢出保护的时间损失太大。其他 SO 和论坛对此进行了讨论。

seterr 可以更改溢出的处理方式 - 默认为警告。但在没有警告的情况下,它不能强制发生错误。

关于python - Numpy seterr 未检测到溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66015753/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com