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

如何利用.all()和.any()获取目标数组在numpy数组列表中的索引?

如何用numpy的.all()和.any()获取目标数组在数组列表中的索引?

当然可以啦!其实你已经完成了最关键的一步——生成每行是否匹配的布尔掩码,接下来只需要结合np.where()就能轻松拿到目标数组的索引了,我来一步步给你演示:

首先回顾你的示例代码,你已经通过(t == t2).all(1)得到了标记匹配行的布尔数组:

import numpy as np

t = np.array([[1,2,3], [4,5,6] , [7,8,9], [10, 11, 12]])
t2 = np.array([1,2,3])
# 生成每行是否与t2完全匹配的掩码
match_mask = (t == t2).all(1)
print(match_mask)  # 输出: [ True False False False]

接下来,我们可以用np.where()函数提取这个掩码中True对应的索引:

# 获取所有匹配行的索引
indices = np.where(match_mask)[0]
print(indices)  # 输出: [0]

补充说明:

  • np.where(match_mask)会返回一个元组,对于一维的掩码数组,元组的第一个元素就是所有匹配位置的索引数组;
  • 如果你的数组列表中有多个和t2匹配的数组,这个方法会返回所有对应的索引。比如:
    t = np.array([[1,2,3], [4,5,6], [1,2,3], [10,11,12]])
    match_mask = (t == t2).all(1)
    indices = np.where(match_mask)[0]
    print(indices)  # 输出: [0 2]
    
  • 如果你想先确认是否存在匹配项,可以继续用你之前的match_mask.any()判断,再去获取索引,避免出现索引为空的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:58:55