You need to enable JavaScript to run this app. 使用numpy的extract函数筛选二维数组为何得到错误结果?
优惠活动
大模型
产品
解决方案
定价
更多

使用numpy的extract函数筛选二维数组为何得到错误结果?

错误原因

np.extract的核心工作逻辑是:将输入的条件数组、待提取数组都先展平为一维结构,再根据条件数组中为True的索引,提取待提取数组对应位置的元素。要求两者元素总数匹配,否则会出现截断匹配的问题。
你当前代码里的条件数组con形状为(5,)(共5个元素,对应5名学生的性别判断结果),而待提取的students数组形状为(5,2)(共10个元素),最终提取时只会匹配students展平后的前5个元素,自然得到错误结果。

修正方案

将条件数组的形状扩展为和students完全一致,保证同一行的两个元素的判断条件和该行的性别判断结果相同,提取后再reshape为二维结构即可:

import numpy as np

students=np.array([["alexis", "female"],["alex", "male"], ["david", "non-binary"], ["samar", "male"], ["anweshan","male"]])

# 扩展条件数组形状为和students一致的(5,2)
con = np.broadcast_to((students[:,1] == "male")[:, np.newaxis], students.shape)

male_students = np.extract(con, students).reshape(-1, 2)
print(male_students)

运行输出:

[['alex' 'male']
 ['samar' 'male']
 ['anweshan' 'male']]

内容的提问来源于stack exchange,提问作者Anweshan Goswami

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 07:45:08