【问题标题】:difference between arrays in numpynumpy中数组之间的区别
【发布时间】:2018-08-07 13:36:52
【问题描述】:

所以,我有 3 个 RGB 通道的灰度图像。 我比较两个通道之间的差异,然后看到,当我在 images[0]images[1] 之间取得差异时,以及当我在 images[1]images[0] 之间取得差异时,结果不同。

我做错了什么?

【问题讨论】:

  • 请将代码发布为格式化文本而不是图像。
  • 另外,3 - 1 == 21 - 3 == -2 让你感到惊讶吗?数组也不例外。
  • 但目前我有不同的数字,而不是标志
  • 你确定你的号码实际上是签名的吗?
  • 否,如何将数组转换为已签名?

标签: python numpy scikit-learn scikit-image


【解决方案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)这仍然归结为完全相同的问题。您应该决定要使用的数据类型。
猜你喜欢
  • 2014-02-26
  • 1970-01-01
  • 2015-02-18
  • 2013-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 2012-06-17
相关资源
最近更新 更多