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

如何在numpy数组中查找特定值的首个出现索引?

方法1:直接从np.where返回结果提取

np.where(condition)针对二维数组返回的长度为2的tuple规则如下:

  • tuple的第一个元素是所有符合条件的元素的行索引数组
  • tuple的第二个元素是所有符合条件的元素的列索引数组

两个数组相同下标位置的数值配对,就是一个符合条件的元素坐标,且坐标顺序默认按行优先(C顺序)遍历原数组的顺序排列,因此取下标为0的配对值就是第一个出现的0的位置:

import numpy as np

# 示例数组,对应你(1000,6)的业务场景
arr = np.ones((1000, 6))
arr[2, 3] = 0 # 手动设置测试用0
arr[5, 1] = 0

zero_coords = np.where(arr == 0)
if len(zero_coords[0]) > 0:
    # 取第一个0的行、列索引
    first_zero_row = zero_coords[0][0]
    first_zero_col = zero_coords[1][0]
    print(f"第一个0的坐标:行{first_zero_row},列{first_zero_col}")
else:
    print("数组中不存在0")

方法2:大数组场景下更高效的方案

np.where会遍历全数组找到所有符合条件的元素,如果你只需要第一个0的位置,用np.argmax可以在找到第一个匹配项后停止遍历,性能更好:

# 拉平数组后找第一个0的一维索引
flat_idx = np.argmax((arr == 0).ravel())
# 转换为二维坐标
row, col = np.unravel_index(flat_idx, arr.shape)

# 额外判断是否真的存在0:如果全数组没有0,argmax会默认返回0下标
if arr[row, col] != 0:
    print("数组中不存在0")
else:
    print(f"第一个0的坐标:行{row},列{col}")

内容的提问来源于stack exchange,提问作者david

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:48:03