如何不用for循环计算Python numpy数组中相邻元素的间隔距离
解决方案
直接调用NumPy内置的np.diff()方法即可,该方法专门用于计算数组相邻元素的差值,底层由C实现,性能远高于手写Python循环,实现仅需一行代码:
import numpy as np # arr为你的原始numpy数组 interval_arr = np.diff(arr)
返回的interval_arr长度为原数组长度减1,每个元素对应原数组后一位减前一位的间隔值,完全匹配你的需求。
补充说明
你提到的np.flatnonzero方法用于返回数组中非零元素的扁平化索引,和当前计算相邻差值的需求不匹配,不需要使用该方法。
你给出的示例数组运行效果如下:
arr = np.array([18, 36, 54, 9893804, 9893822, 9893840], dtype=np.int64) print(np.diff(arr)) # 输出:array([18, 18, 9893750, 18, 18], dtype=int64)
如果需要返回的间隔数组长度和原数组一致,可以在差值结果的首尾补指定值,示例如下:
# 头部补0,输出长度和原数组相同 interval_arr_pad = np.pad(np.diff(arr), (1, 0), constant_values=0) # 尾部补0则修改pad参数为(0, 1)
内容的提问来源于stack exchange,提问作者Zibri
相关产品推荐
相关产品推荐

