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

NumPy:如何从元素为字典的数组中提取值生成新数组?

NumPy没有专门针对字典元素数组的内置专用方法,但可以通过向量化操作实现比你当前方案更简洁高效的实现,不需要手动循环赋值。

1. 提取指定key对应值的数组

用np.vectorize封装字典取值逻辑,直接生成和原数组形状一致的值数组:

import numpy as np

# 封装获取指定key的逻辑,可通过get的第二个参数设置key不存在时的默认返回值
get_target_key = np.vectorize(lambda dict_item: dict_item.get("key"))
# 直接生成值数组
value_array = get_target_key(old_array)

输出的value_array就是你需要的[["value","othervalue"],["notvalue","value"]]格式的数组。

2. 生成布尔判断数组

有两种实现方式,都可以完全替代你当前的循环写法:

方式一:基于提取的值数组直接判断

如果已经提取了值数组,直接用np.isin批量判断即可:

bool_array = np.isin(value_array, ["value", "othervalue"])

方式二:一步直接生成布尔数组

不需要先提取值,直接把判断逻辑封装到向量化函数里:

check_condition = np.vectorize(lambda dict_item: dict_item.get("key") in {"value", "othervalue"})
bool_array = check_condition(old_array)

得到的bool_array就是你需要的[[True, True],[False, True]]格式的布尔数组。

补充说明

  • 上述方案的性能远高于手动循环赋值,数组规模越大优势越明显,代码可读性也更高。
  • 如果你的字典结构更复杂,或者需要高频操作这类数据,也可以考虑将数组转换为Pandas的DataFrame或者NumPy结构化数组,更适合结构化数据的批量操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:36:03