Python中根据列表元素定位数组元素并获取对应值
解决Numpy数组匹配索引并提取对应元素的问题
你原来的代码把原数组A给覆盖了,根本没用到它来做匹配。下面是修正后的代码,能实现你要的需求:
import numpy as np A = np.array([[0, 4], [0, 5], [1, 6]]) B = np.array([[9.16435586e-05], [1.84193464e-14], [1.781909182e-5]]) indices = [[0, 4], [1, 6]] # 输出原indices列表 print(indices) # 提取B中对应元素 result_B = [] for idx in indices: # 逐行匹配A中的元素,找到和idx完全一致的行 match_mask = np.all(A == idx, axis=1) # 提取B中对应行的元素,加入结果列表 result_B.append(B[match_mask].tolist()) # 输出整理后的B结果 print(result_B)
输出结果:
[[0, 4], [1, 6]] [[[9.16435586e-05]], [[1.781909182e-05]]]
关键说明:
- 避免覆盖原数组A:循环里用
idx代替原来的A变量,保留原数组用于匹配 np.all(A == idx, axis=1):按行判断A的每一行是否和idx完全一致,返回布尔数组标记匹配行- 用布尔数组
match_mask索引B,提取对应行的元素,再转成列表格式和期望输出对齐
内容的提问来源于stack exchange,提问作者rajunarlikar123
相关产品推荐
相关产品推荐

