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

如何将for循环结果垂直堆叠为70×35的二维ndarray?

问题解决:正确生成70×35的预测概率数组

问题原因

你初始化predicted_probabilities为(70,35)的空数组,之后每次循环用vstack把新的result(形状(1,35))追加进去。循环70次后,原本的70行加上新增的70行,总形状就变成了140×35,这就是重复追加的核心原因。

两种正确实现方式

方式1:初始化空数组,循环堆叠

import numpy as np

actual_values_images = []
predicted_values_images = []
predicted_probabilities_images = []
# 初始化为空数组,而非预设70行
predicted_probabilities = np.empty((0, 35), dtype=np.float32)

for testImage in test_image_folder: 
    img = folder_path + str(testImage)
    img = image.load_img(img, target_size=(64, 64))
    img = image.img_to_array(img)
    img = np.expand_dims(img, axis=0)

    result = classifier.predict(img, verbose=0) 
    actual_values_images.append(str(testImage[1:-4]))

    # 垂直堆叠新的预测结果
    predicted_probabilities = np.vstack([predicted_probabilities, result])
    
    predicted_values_images.append(ResultMap[np.argmax(result)])
    predicted_probabilities_images.append(result)

初始空数组形状为(0,35),每次堆叠(1,35)的result,循环70次后正好得到(70,35)的数组。

方式2:预分配数组,索引赋值(更高效)

import numpy as np

actual_values_images = []
predicted_values_images = []
predicted_probabilities_images = []
# 预分配70×35的浮点数数组(预测概率是浮点数,不要用int类型)
predicted_probabilities = np.empty((70, 35), dtype=np.float32)

for idx, testImage in enumerate(test_image_folder): 
    img = folder_path + str(testImage)
    img = image.load_img(img, target_size=(64, 64))
    img = image.img_to_array(img)
    img = np.expand_dims(img, axis=0)

    result = classifier.predict(img, verbose=0) 
    actual_values_images.append(str(testImage[1:-4]))

    # 直接通过索引替换对应行
    predicted_probabilities[idx] = result
    
    predicted_values_images.append(ResultMap[np.argmax(result)])
    predicted_probabilities_images.append(result)

用enumerate获取循环索引idx,直接将result赋值给数组的对应行,避免多次数组拼接的性能损耗,同时保证数据类型正确(浮点数存储概率值)。

额外注意

  • 原代码中predicted_probabilities_images未提前初始化,记得要在循环前定义该列表
  • 预测概率是浮点数,不要用int类型存储,否则会丢失精度(比如把0.8这类概率值强制转为0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 05:25:16