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

如何用NumPy语法过滤元素为字典的数组中isActive=True的元素?

纯NumPy语法过滤字典数组中isActive为True的元素

问题场景

给定元素为字典的NumPy数组data,需要过滤出仅isActive字段等于True的元素,要求使用纯NumPy语法实现,禁止转为Python普通列表或使用pandas处理。

示例数据

import numpy as np
import math

data = [
    {'Account': '111', 'RIC': 'AAPL.OQ', 'Position': 100, 'isActive': True, 'Rating': math.nan},
    {'Account': '111', 'RIC': 'MSFT.OQ', 'Position': 200, 'isActive': False, 'Rating': 73},
    {'Account': '111', 'RIC': 'IBM.N', 'Position': 300, 'isActive': True, 'Rating': math.inf},
    {'Account': '222', 'RIC': 'AAPL.OQ', 'Position': 1000, 'isActive': False, 'Rating': 89},
    {'Account': '222', 'RIC': 'MSFT.OQ', 'Position': 2000, 'isActive': True, 'Rating': np.nan},
    {'Account': '222', 'RIC': 'IBM.N', 'Position': 3000, 'isActive': True, 'Rating': 59}
]
data = np.array(data)

解决方案

利用np.vectorize将提取isActive值的逻辑批量应用到数组每个元素,生成布尔掩码后过滤数组:

# 生成布尔掩码:提取每个字典的isActive值
is_active_mask = np.vectorize(lambda x: x['isActive'])(data)

# 用掩码过滤原数组,得到目标结果
filtered_data = data[is_active_mask]

验证结果

执行以下代码可查看过滤后的元素:

for item in filtered_data:
    print(item)

输出结果:

{'Account': '111', 'RIC': 'AAPL.OQ', 'Position': 100, 'isActive': True, 'Rating': nan}
{'Account': '111', 'RIC': 'IBM.N', 'Position': 300, 'isActive': True, 'Rating': inf}
{'Account': '222', 'RIC': 'MSFT.OQ', 'Position': 2000, 'isActive': True, 'Rating': nan}
{'Account': '222', 'RIC': 'IBM.N', 'Position': 3000, 'isActive': True, 'Rating': 59}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 22:42:41