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 == 21 - 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中数组之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

numpy 数组,a /= x 与 a = a / x 之间的区别

cupy或numpy中"数组"与"矩阵"的区别

numpy数组和python数组的区别

numpy矩阵和数组的区别

1.1.1.2NumPy 和 Python

两个不同 Numpy 数组中的点之间的最小欧几里得距离,不在