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

如何向空numpy数组添加值?赋值后出现随机值求助

问题描述

使用numpy.empty()创建数组后,通过for循环结合if-else仅给第一行各列赋值1或0,但运行后整个asr矩阵出现随机值,不符合预期。

代码示例:

number_rows = 16
number_cols = 10
asr = np.empty((number_rows, number_cols))
 
for i in range(10): 
  if prediction[i] == check_keep[i]:
    asr[0][i] = 1 
  else:
    asr[0][i] = 0 
 
asr
解决方案

原因

np.empty()仅负责分配内存空间,不会初始化元素值,所以数组中未被赋值的部分(第2到16行)会保留内存中的随机垃圾数据。你只给第一行赋值了,所以整个矩阵看起来充满随机值,但第一行其实是符合预期的。

解决办法

  1. 初始化数组为固定默认值
    如果希望未赋值的行有统一默认值(比如0),用np.zeros()替代np.empty():

    number_rows = 16
    number_cols = 10
    asr = np.zeros((number_rows, number_cols))  # 所有元素初始为0
    
    for i in range(10): 
      if prediction[i] == check_keep[i]:
        asr[0][i] = 1 
    
  2. 单独验证第一行结果
    如果你只关心第一行,后续会处理其他行,可以直接打印第一行确认结果:

    print(asr[0])  # 这里会输出预期的1和0序列
    
  3. 用向量化操作替代循环(更高效)
    避免for循环,直接用numpy的向量化判断完成赋值,代码更简洁高效:

    asr[0] = np.where(prediction[:10] == check_keep[:10], 1, 0)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 10:30:53