numpy中数组之间的区别
Posted
技术标签:
【中文标题】numpy中数组之间的区别【英文标题】:difference between arrays in numpy 【发布时间】:2018-08-07 13:36:52 【问题描述】:所以,我有 3 个 RGB 通道的灰度图像。
我比较两个通道之间的差异,然后看到,当我在 images[0]
和 images[1]
之间取得差异时,以及当我在 images[1]
和 images[0]
之间取得差异时,结果不同。
我做错了什么?
【问题讨论】:
请将代码发布为格式化文本而不是图像。 另外,3 - 1 == 2
和 1 - 3 == -2
让你感到惊讶吗?数组也不例外。
但目前我有不同的数字,而不是标志
你确定你的号码实际上是签名的吗?
否,如何将数组转换为已签名?
【参考方案1】:
观察:
>>> import numpy as np
>>> a, b = np.random.randint(0, 255, (2, 10), dtype=np.uint8)
>>> a - b
array([ 62, 10, 126, 206, 157, 36, 170, 42, 54, 1], dtype=uint8)
>>> b - a
array([194, 246, 130, 50, 99, 220, 86, 214, 202, 255], dtype=uint8)
>>> a.astype(np.int) - b.astype(np.int)
array([ 62, -246, -130, -50, -99, 36, -86, 42, 54, 1])
>>> b.astype(np.int) - a.astype(np.int)
array([-62, 246, 130, 50, 99, -36, 86, -42, -54, -1])
RGB 图像包含 无符号(仅限非负数)8 位整数,因此所有操作都将返回 np.uint8
:
>>> np.uint8(1) - np.uint8(5)
__main__:1: RuntimeWarning: overflow encountered in ubyte_scalars
252 # not -4
>>> np.int8(1) - np.int8(5)
-4
【讨论】:
a) 您在帖子中没有提及规范; b)这仍然归结为完全相同的问题。您应该决定要使用的数据类型。以上是关于numpy中数组之间的区别的主要内容,如果未能解决你的问题,请参考以下文章