【问题标题】:Numpy multidimensional array, count inner arrays which are equalNumpy多维数组,计算相等的内部数组
【发布时间】:2019-05-17 06:20:34
【问题描述】:

我正在尝试比较两个 3 维数组并计算有多少内部数组相等。

我正在比较图片的 2 个色块,想知道有多少像素相等,而不是多少颜色值相等。如果它很有效,那就太好了,所以我正在使用 numpy.我知道如何与 for 循环进行比较,但它太慢了。

但我只能按元素计算,这是我的 sn-p:

import numpy as np

a = np.array([[[255, 255, 255],
           [255, 255, 255],
           [255, 255, 255],
           [255, 255, 255]],

          [[255, 255, 255],
           [255, 255, 255],
           [255, 255, 255],
           [255, 255, 255]],

          [[255, 255, 255],
           [255, 255, 255],
           [255, 255, 255],
           [255, 255, 255]],

          [[255, 255, 255],
           [255, 255, 255],
           [255, 255, 255],
           [255, 255, 255]]])

b = np.array([[[255, 255, 255],
           [255, 255, 255],
           [0, 0, 0],
           [0, 0, 0]],

          [[255, 255, 255],
           [255, 255, 255],
           [0, 0, 0],
           [0, 0, 0]],

          [[0, 0, 0],
           [0, 0, 0],
           [0, 0, 0],
           [0, 0, 0]],

          [[0, 0, 0],
           [0, 0, 0],
           [0, 0, 0],
           [0, 0, 0]]])
print(np.sum(a[:, :] == b[:, :])) 
# prints 12 and i would like to have a 4 in this example

【问题讨论】:

  • 期望的答案不应该是 4 吗?我看到 4 个子数组相等
  • 当然是的:)

标签: python arrays numpy


【解决方案1】:

首先检查每个像素的所有三个颜色值是否相等,然后通过对真值求和来计算相等的像素:

(a == b).all(axis=-1).sum()
# 4

【讨论】:

  • 我还有一个问题,也许你可以回答。我想检查是否相等但差异很小。换句话说,如果该值是例如 10% 的折扣,则相等。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-16
  • 2015-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多