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

为什么np.where(...)[-1]无法返回数组的最后一个匹配元素?

问题根因

你对np.where()的返回结构理解错了:

  • 无论输入数组是几维,np.where(condition)的返回值都是元组,元组的元素个数等于输入数组的维度数,每个元素是一个一维数组,存的是对应维度上所有满足条件的坐标值。
  • 你的输入是一维数组,所以拿到的result是长度为1的元组,里面唯一的元素才是存了所有匹配下标的数组array([1, 9, 12])。
  • 此时写result[-1],本质是对长度为1的元组取最后一个元素,拿到的自然是整个下标数组,输出就是[1 9 12],根本不是对下标数组取最后一位。
正确实现

要拿到最后一个匹配项的下标,需要先从元组里取出对应维度的下标数组,再对这个数组取最后一位:

import numpy as np

my_array = np.array([1, 2, 1, 1, 3, 4, 3, 1, 1, 2, 1, 1, 2])
# 一维数组对应元组第0位的下标数组,取数组最后一位
result = np.where(my_array==2)
last_idx = result[0][-1]
print(last_idx)

运行后即可得到预期输出12。

补充:如果是二维数组,np.where返回的元组会包含两个一维数组,分别对应行坐标、列坐标,取匹配位置时需要分别索引两个数组的对应位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 09:39:57