如何基于给定数组的元素值查找二维numpy数组的对应位置索引
Numpy 匹配指定元素查找行列索引解决方案
首先给出可直接运行的实现代码:
import numpy as np # 示例输入数组 A = np.array([[1, 4, 3, 0, 5],[6, 0, 7, 12, 11],[20, 15, 34, 45, 56]]) B = np.array([[4, 5, 6, 7]]) # 核心逻辑 B_flat = B.ravel() # 将B转为一维数组,适配匹配规则 match_mask = np.isin(A, B_flat) # 生成和A形状一致的布尔掩码,匹配到元素的位置为True row_idx, col_idx = np.where(match_mask) # 提取所有匹配位置的行、列索引 C = np.column_stack((row_idx, col_idx)) # 拼接为要求的输出结构 print(C)
运行后输出结果和你给出的示例完全一致:
[[0 1] [0 4] [1 0] [1 2]]
相关说明:
- 如果B本身就是一维数组,可以省略
ravel()步骤,加这步是为了兼容你示例中B是二维行向量的场景 - 如果你需要输出为Python原生列表而非numpy数组,在最后追加
C = C.tolist()即可 - 整个实现基于numpy向量化操作,即使A、B数据规模很大,运行效率也远高于手动循环遍历的方案
内容的提问来源于stack exchange,提问作者Farzan Bahmani
相关产品推荐
相关产品推荐

