【问题标题】:How to compare numpy multidimensional arrays difference?如何比较 numpy 多维数组的差异?
【发布时间】:2018-11-26 03:30:25
【问题描述】:

假设我有两个一维数组:

a = np.array ([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
b = np.array ([0, 1, 2, 3, 4, 5, 6, 7, 10, 10])
np.mean (a! = b)

这将给出两个数组彼此相差多少%。 我想对多维数组做同样的事情,但要考虑到一定的深度。例如。我们有两个带有元组的数组。

a = np.array ([(1, 1), (2, 2)])
b = np.array ([(1, 1), (3, 3)])
np.mean (a! = b)

这将按预期返回 0.5。 我的问题出现在以下场景

a = np.array ([(1, 1), (2, 2)])
b = np.array ([(1, 1), (2, 3)])
np.mean (a! = b)

这将返回 0.25,而不是我预期的 0.5。似乎 numpy 在“最深”级别进行比较。有什么办法可以影响深度/轴,使结果再次为 0.5?

【问题讨论】:

    标签: python arrays numpy multidimensional-array mean


    【解决方案1】:

    你必须在一维中合并你的差异矩阵:

    np.mean((a!=b).any(axis=1))
    

    【讨论】:

      【解决方案2】:

      另一种方法是:

      In [42]: a = np.array ([(1, 1), (2, 2)])
          ...: b = np.array ([(1, 1), (2, 3)])
      
      # sum it along axis 1 and then take average
      In [43]: np.mean(np.sum(np.not_equal(a, b), axis=1))
      Out[43]: 0.5
      
      # you can also, sum it along axis 0 and then take average
      In [44]: np.mean(np.sum(np.not_equal(a, b), axis=0))
      Out[44]: 0.5
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-24
        • 1970-01-01
        相关资源
        最近更新 更多