You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NumPy中计算n维数组每行非-1相邻元素的列索引距离

NumPy数组相邻非-1元素列距计算实现

输入样例

给定待处理的NumPy数组如下:

import numpy as np

arr = np.array([['a', -1, -1, -1],
                [ -1,'b','c', -1],
                ['e', -1,'d','f']], dtype=object)

计算规则

逐行遍历数组,仅当某行存在2个及以上取值不为-1的元素时做统计:

  • 仅统计相邻非-1元素对:即两个非-1元素之间没有其他非-1元素,间隔存在其他非-1元素的配对不统计
  • 距离计算方式:配对中右侧元素的列索引减去左侧元素的列索引

实现代码

result = []
for row in arr:
    # 提取当前行所有非-1元素的列索引,按从左到右顺序排列
    valid_cols = np.where(row != -1)[0]
    if len(valid_cols) >= 2:
        # 相邻索引做差,直接得到符合要求的距离
        row_distances = np.diff(valid_cols).tolist()
        result.append(row_distances)
    else:
        # 有效元素不足2个,无统计结果
        result.append([])

print(result)

结果校验

运行代码后输出结果为[[], [1], [2, 1]],和示例规则完全匹配:

  • 第0行仅存在1个非-1元素'a',无符合要求的配对,返回空列表
  • 第1行非-1元素列索引为[1, 2],差值为1,对应元素对('b','c')的距离
  • 第2行非-1元素列索引为[0, 2, 3],相邻差值分别为2、1,对应元素对('e','d')、('d','f')的距离;('e','f')中间存在非-1元素'd',不会被统计,符合要求

注:该实现兼容任意列数的二维NumPy数组,无需针对列数做额外适配

内容的提问来源于stack exchange,提问作者Song Calderone Zhang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 19:27:16