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

如何移除字典内字符串数组的nan?解决Python标量转换报错

解决字典内数组移除NaN的问题

错误原因

你之前的代码错误在于直接对整个数组调用isnan()函数——不管是numpy.isnan还是math.isnan,都只能处理单个标量值,无法直接作用于数组,因此触发了仅尺寸为1的数组可转换为Python标量的错误。同时你的代码逻辑是过滤整个键值对,而非过滤数组内的NaN元素,和需求不符。

正确实现方法

假设你使用的是numpy数组,以下两种方法可以实现需求:

方法1:利用numpy数组的布尔索引

利用NaN不等于自身的特性(x != x仅对NaN成立),生成布尔索引过滤数组:

import numpy as np

# 原始数据
sdg_keywords_dict = {'test1': np.array(['a','b','c','d','e','f',np.nan,'g '], dtype=object)}
# 过滤数组内的NaN,生成新字典
test_dict = {key: values[values == values] for key, values in sdg_keywords_dict.items()}

方法2:转列表过滤后再转回数组

更直观的方式是先将数组转为列表,过滤掉NaN元素后再转回numpy数组:

import numpy as np

sdg_keywords_dict = {'test1': np.array(['a','b','c','d','e','f',np.nan,'g '], dtype=object)}
test_dict = {key: np.array([item for item in values if item is not np.nan]) for key, values in sdg_keywords_dict.items()}

验证结果

执行上述代码后,test_dict['test1']会得到:

array(['a', 'b', 'c', 'd', 'e', 'f', 'g '], dtype=object)

已成功移除数组内的NaN元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 18:16:38