首页 > 解决方案 > 比较二维数组

问题描述

我想编写一个代码,它输出数组值的相似性a,b,c。我希望代码检查数组之间是否有任何相似的值。我将b and ca. 所以[ 0, 1624580882]比较时存在a等等b。两列必须相等才能进行比较。

import numpy as np 

a= np.array([[         0, 1624580882],
 [         1, 1624584458],
 [         0, 1624589467],
 [         1, 1624592213],
 [         0, 1624595336],
 [         1, 1624596349]])

b= np.array([[         1, 1624580882],
 [         1, 1624584460],
 [         1, 1624595336],
 [         1, 1624596349]])


c = np.array([[         0, 1624580882],
 [         1, 1624584458],
 [         0, 1624589495],
 [         1, 1624592238],
 [         0, 1624595336],
 [         1, 1624596349]])

预期输出:

b comparison
Similarities= None

c comparison
Similarities= [         0, 1624580882],[         1, 1624584464], [         0, 1624595350],[         1, 1624596380] 

标签: pythonarraysnumpymultidimensional-arrayformat

解决方案


我不是给你实际的解决方案,而是我可以帮助你一个简单的功能。您可以根据该功能设计其余代码。

def compare_arrays(arr_1, arr_2):
    result = []
    for row in arr_1:
        result.append(row in arr_2)
    return result

编辑:

用于获取重复值的索引。

 from numpy.lib import recfunctions as rfn
 ndtype = [('a', int)]
 a = np.ma.array([1, 1, 1, 2, 2, 3, 3],mask=[0, 0, 1, 0, 0, 0, 1]).view(ndtype)
 rfn.find_duplicates(a, ignoremask=True, return_index=True)

推荐阅读