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

如何修复‘TypeError: float() argument must be a string or a number, not 'map'’错误

解决TypeError: float() argument must be a string or a number, not 'map'的问题

这个错误的核心原因很明确:在Python 3中,map()返回的是迭代器对象,而非直接生成列表。当你直接把这个迭代器传给np.array()时,numpy会尝试将整个迭代器作为单个元素转换为float32类型——但迭代器既不是字符串也不是数字,自然就抛出了这个错误。

下面给你两种实用的解决办法:

  • 方法1:将map对象转为列表(最直接的修复)
    只需要用list()把map返回的迭代器包裹起来,先把它转换成numpy能识别的序列类型,再转数组:

    X_train = np.array(list(map(str.split, train_set.pixels)), np.float32)
    
  • 方法2:用原生numpy函数处理(更高效的方式)
    如果你的train_set.pixels是可迭代的字符串集合(比如Pandas Series或numpy数组),可以用numpy的字符操作函数来完成分割,避免Python层面的迭代,效率会更高:

    # 先将像素字符串转为numpy字符串数组
    pixels_str_array = np.array(train_set.pixels, dtype=str)
    # 分割每个字符串并转换为float32类型
    X_train = np.array(np.char.split(pixels_str_array).tolist(), np.float32)
    

额外提示:调整数组形状匹配你的参数

因为你设置了depth=1、height=width=48,处理完之后记得把数组reshape成对应的形状,这样才能用于后续的模型输入:

X_train = X_train.reshape(-1, 48, 48, 1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:40:12