如何用NumPy计算元素间最小绝对差值(含跨100取模规则)
NumPy计算跨100取模的元素最小绝对差值
现有两个NumPy数组:
import numpy as np a = np.array([101,105,90,102,90,10,50]) b = np.array([99,110,85,110,85,90,60]) expected_result = np.array([2,5,5,8,5,20,10])
需求:仅用NumPy运算计算两个数组对应元素间的最小绝对差值,且当两个数值跨100时需按100取模处理(即考虑数值在0-100循环的场景,比如10和90的最小差值是20,而非80)。
实现思路
核心逻辑是:对每一对对应元素,先计算两者的绝对差值d,再计算100 - d(这是跨100循环后的差值),最终取这两个值中的较小者,就是符合要求的最小绝对差值。
代码实现
import numpy as np a = np.array([101,105,90,102,90,10,50]) b = np.array([99,110,85,110,85,90,60]) # 计算对应元素的绝对差值 d = np.abs(a - b) # 取绝对差值和跨100差值中的较小值 result = np.minimum(d, 100 - d) print(result) # 输出:[ 2 5 5 8 5 20 10] print(np.array_equal(result, expected_result)) # 输出:True
验证说明
- 元素对
10和90:绝对差值为80,跨100循环后的差值为20,取最小值20,符合预期。 - 元素对
101和99:绝对差值为2,跨100循环后的差值为98,取最小值2,符合预期。 - 其余元素对的计算逻辑一致,最终结果与预期完全匹配。
内容的提问来源于stack exchange,提问作者Majoris
相关产品推荐
相关产品推荐

