繁体   English   中英

uint16添加上的Numpy无溢出异常

Numpy No Overflow Exception on uint16 Addition

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我想为 uint16 信号添加噪声,但我想避免溢出,以防某些信号值为零:

np.seterr(all='raise')
noise = np.random.normal(0,2,9*9).reshape(9,9)
noise = np.around(noise,out=noise)
noise = noise.astype(np.uint16,copy=True)
signal = np.zeros((9,9), dtype=np.uint16)
try:
    signal += noise
except FloatingPointError:
    print("Overflow Detected")
    # Handle overflows
print(test)

不幸的是,没有引发异常。 文档中的示例有效。

>>> np.int16(32000) * np.int16(3)
---------------------------------------------------------------------------
FloatingPointError                        Traceback (most recent call last)
<ipython-input-84-5e468485740e> in <module>
----> 1 np.int16(32000) * np.int16(3)

有没有办法为 uint16 添加启用异常?

或者是否有一种有效的方法来检查不涉及逐个元素遍历数组的溢出?

1 个回复

Numpy 支持广播比较运算符。 因此,该问题可以通过检查非法值的结果来解决。 在我的情况下,信号实际上是 12 位,因此任何高于2**12-1值都必须来自溢出。

noise = np.random.normal(0,2,9*9).reshape(9,9)
noise = np.around(noise,out=noise)
noise = noise.astype(np.uint16,copy=True)
test = np.zeros((9,9), dtype=np.uint16)
test += noise
check = test > 2**12-1
if check.any():
    print("Overflow detected")

如果您有实际的 16 位值,则可以在 32 位数组中执行算术运算(例如加法); 然后,您可以以相同的方式检查非法值。

您还可以使用np.where()立即处理溢出:

np.where(a > OVERFLOW_BOUNDARY, f(a), a)

请注意,您可能希望在处理程序函数中区分上溢和下溢。

1 反转numpy数组图像,可能是uint8,uint16,

有更好的方法吗? 具体来说,这些最大值是否可通过numpy API获得? 我无法在API中找到它们,尽管它们很容易在文档中找到。 像PIL和cv2这样的软件包为反转图像提供了方便的工具,但是在代码的这一点上我有一个numpy数组 - 接下来是更复杂的分析 - 我想坚持使用numpy。 ...

2 Numpy 将 uint16 解包为 1-5-5-5 位块

我正在尝试使用 numpy 将二进制字符串转换为 Python 中的图像,但我很难找到一种使用非常规位分布来处理它的好方法(据我所知)。 这些是转换方式和转换内容的细节。 16 位纹理平铺 (256*256)。 每个 bitu16 代表一个像素,其颜色的格式为 ARGB,MSB-to-LSB:1 ...

5 从uint16到uint8的转换

有人知道我如何在STM32F091的C程序中从uint16正确转换为uint8吗? 我以为是这样的: 但这不是很好,所以有人有建议吗? [ 评论更新:] 我使用的电位器的最小值为0x0,最大值为0xFFF。 测试必须具有ADC1-&gt; DR的值(这是STM32F ...

6 将Uint16拆分为Uint8

我正在尝试创建一个将Uint16拆分为2个Uint8值的函数,现在我正在变量中获取值,但这些值不正确。 我不知道出了什么问题。 任何帮助,将不胜感激。 编辑:因此在Joachim Sauer建议之后,我更改了代码。 它工作得更好,但仍然没有正确的价值 JavaScript代码 ...

7 使用uint8,uint16等

目前我正在使用针对32位MIPS平台的代码库(C,C ++混合)。 处理器是一个相当现代的处理器[只是提到我们有很好的处理能力和内存]。 代码库使用数据类型,如uint8 [1字节宽无符号整数],uint16 [2字节宽无符号整数],uint32 [4字节宽无符号整数]等。 我知道 ...

8 检查uint16是否在范围内的最快方法,包括溢出包装

我得到的取值范围是0到65535(如uint16)。 如果值超出边界,则它们会回绕,fe 65535 + 1 = 0。 检查数字x是否在给定范围内(y,y + 20)的最快方法是什么? 其中x和y在值的范围内,但是y+20可以包装。 例如,当x = 2且y = 65533 ,返回值应 ...

9 numpy:在big endian中编写uint16的大型2D数组

我正在尝试将512x512 uint16 2D数组保存为二进制电影的二进制帧。 格式必须是大端格式,但我一直写的字节序数据很少(试图在Matlab,java中读取它,它仍然是小端格式)。 我尝试更改如下所示的字节顺序,但无济于事。 我很抱歉这是一个愚蠢的问题。 以下线程似乎相关,但 ...

2018-03-21 00:36:19 1 339   numpy
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM