使用np.argwhere处理数组切片时,如何获取原数组中的元素索引?
实现方法
直接通过布尔掩码筛选原索引列表即可,步骤如下:
- 先生成子集元素满足条件的布尔数组
- 用这个布尔数组过滤原索引数组
i,再调整成和np.argwhere一致的二维格式
完整代码示例:
import numpy as np A = np.array([1,2,3,4,5,6,7,8,9]) i = [0, 3, 6, 7, 8] # 生成子集的条件掩码 mask = A[i] < 8 # 筛选原索引并调整形状 result = np.array(i)[mask].reshape(-1, 1) print(result)
运行后输出:
array([[0], [3], [6]])
简单解释:
A[i] < 8会得到布尔数组[True, True, True, False, False],标记子集里哪些元素符合条件- 将原索引列表
i转为numpy数组后,用这个掩码直接提取对应位置的原索引 reshape(-1, 1)是为了让输出格式和np.argwhere返回的二维列数组完全匹配
内容的提问来源于stack exchange,提问作者Ronin
相关产品推荐
相关产品推荐

