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

CNN预测结果存入DataFrame出现嵌套括号问题及解决咨询

解决CNN预测结果双层/单层括号的问题

我太懂你这个困扰了!之前用Keras/TensorFlow的模型做预测时,也被model.predict返回的数组维度坑过好几次😅

问题根源

model.predict默认是为批量输入设计的——哪怕你只传入一张图片,它也会返回一个二维数组(形状类似[[预测值]])。你之前改成prediction[0]只是拿到了单样本的一维数组(比如[预测值]),所以还剩一层括号。

彻底去除括号的几种方法

根据你的场景,直接在收集结果时处理最高效,给你几个实用方案:

1. 直接索引到标量(最直观)

如果你的模型是单输出(比如回归任务、二分类的概率输出),直接取二维数组的第二个索引就能拿到纯数字:

for img in glob.glob(test_img):
    prediction = model.predict(prepare(img))
    # 从[[x]]直接取x
    result.append(prediction[0][0])

2. 使用.item()方法(更简洁)

对于单元素的numpy数组,.item()可以直接提取里面的标量值,不管是二维还是一维都能用:

for img in glob.glob(test_img):
    prediction = model.predict(prepare(img))
    result.append(prediction.item())

3. 扁平化数组后取第一个元素

如果不确定数组维度,用.flatten()把数组压成一维,再取第一个元素也能解决:

for img in glob.glob(test_img):
    prediction = model.predict(prepare(img))
    result.append(prediction.flatten()[0])

额外方案:如果已经生成DataFrame再处理

要是你已经生成了带一维括号的DataFrame,也可以用apply快速处理:

temp['Prediction'] = temp['Prediction'].apply(lambda x: x[0])

这样处理后,你的Prediction列就只会显示纯数字,再也没有烦人的括号啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 11:52:32