简体   繁体   English

如何在Numpy中比较两个数组'array-elementwise'的数组?

[英]How to compare two arrays of arrays 'array-elementwise' in Numpy?

Given two arrays of arrays A and B, I need to test the equality of each subarray from A (ai) to its corresponding subarray in B (bi): 给定数组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))

Unsurprisingly, the output I get with A == B : [[False True False][ True True True][False True False]] . 毫不奇怪,我通过A == B获得的输出: [[False True False][ True True True][False True False]]

Unsurprisingly, the output I get with np.array_equal(A, B) : False . 毫不奇怪,我通过np.array_equal(A, B)获得的输出: False

The output I would like to get: [[False, True, False]] . 我想得到的输出: [[False, True, False]]

I would like to know if there exists an off-the-shelf solution that I have not found or if I should implement my own. 我想知道是否存在尚未找到的现成解决方案,或者是否应该实施自己的解决方案。

You can get logical and results along axis=1 from A == B. 您可以从A == B获得沿轴= 1的逻辑和结果。

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

You can use something like this: 您可以使用如下形式:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM