Skip to main content
 首页 » 编程设计

python : find difference between two arrays in python

2025年05月04日11findumars

我在 python 中有两个数组。

arr1 = [(7, 0.78, 7920), (8, 0.9, 9000)] 
arr2 = [(7, 1.68, 8460)] 

在此数组中,第一个值是 ID (7,8,7)。我希望结果基于 ID。如果 ID 相同则获取其他两个值之间的差异。
arr1 和 arr2 ID 7 相同则减去 (1.68-0.78 = 0.9) 和 (8460-7920 = 540) 否则将相同。 如何获得这样的结果?

diffArray = [(7, 0.9, 540), (8, 0.9, 9000)] 

请您参考如下方法:

这是一种方法。首先,我正在创建从 ID 到其他值的字典:

arr1 = [(7, 0.78, 7920), (8, 0.9, 9000)] 
arr2 = [(7, 1.68, 8460)] 
 
dict1 = {i: (x, y) for i, x, y in arr1} 
dict2 = {i: (x, y) for i, x, y in arr2} 

然后我使用带有条件的列表理解来做正确的事情:

diffArray = [ 
    ( 
        i, 
        abs(dict2[i][0] - dict1[i][0]), 
        abs(dict2[i][1] - dict1[i][1]), 
    ) 
    if i in dict2 
    else (i, dict1[i][0], dict1[i][1]) 
    for i in dict1 
] 

结果可能有点出乎意料:

[(7, 0.8999999999999999, 540), (8, 0.9, 9000)] 

明显的不精确是由于浮点表示。要解决这个问题(如果它很重要),请使用 Decimal 或对值进行四舍五入。