如何比较两个数组阵列' array-elementwise'在Numpy?

时间:2017-01-07 15:29:06

标签: python numpy

给定两个数组A和B的数组,我需要测试A(ai)中每个子数组与B(bi)中相应子数组的相等性:

import numpy as np

a1 = np.array([1, 2, 3])
a2 = np.array([3, 4, 5])
a3 = np.array([2, 4, 6])
A = np.array([a1, a2, a3])

b1 = np.array([3, 2, 1])
b2 = np.array([3, 4, 5])
b3 = np.array([6, 4, 2])
B = np.array([b1, b2, b3])

def compare_arrays(A, B):
    #ret = A == B
    #ret = np.array_equal(A, B)
    return ret

print(compare_arrays(A, B))

毫不奇怪,我使用A == B获得了输出:[[False True False][ True True True][False True False]]

毫不奇怪,我使用np.array_equal(A, B)获得了输出:False

我想得到的输出:[[False, True, False]]

我想知道是否存在我尚未找到的现成解决方案,或者我是否应该实施自己的解决方案。

2 个答案:

答案 0 :(得分:4)

你可以从A == B得到轴= 1的逻辑和结果。

def compare_arrays(A, B):
    ret = np.equal(A, B).all(axis=1)
    return ret

答案 1 :(得分:-1)

您可以使用以下内容:

def compare_arrays(A, B):
    return map(lambda item: not False in item, A==B)