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

NumPy修改列值报错:无法将(108,1)数组广播到(108,)如何解决

错误原因

你遇到的报错是维度不匹配导致的:
你定义的Weight形状为(108, 796),取Weight[:,i]时得到的是长度为108的一维数组,形状为(108,);而你生成的tt是二维数组,形状为(108,1),多了一个长度为1的列维度,numpy的广播规则不支持直接将二维数组赋值给一维数组的位置,因此触发报错。

解决方法

你可以任选以下任意一种方案修改代码:

  • 方案1:赋值时压缩tt的冗余维度
    使用np.squeeze()自动去掉tt中长度为1的维度,修改赋值代码为:
    Weight[:,i] = np.squeeze(tt)
    
  • 方案2:生成tt时直接定义为一维数组
    修改reshape的目标形状参数,去掉第二个维度的1即可:
    tt = np.reshape(AR[:,:,i].T,(AR_a*AR_b,),order='F')
    
    该方案会直接修改tt的形状为一维,如果你后续逻辑还需要用到二维的tt,优先选方案1或3
  • 方案3:赋值时显式取tt的第一列
    直接提取二维tt的第一列得到一维数组,修改赋值代码为:
    Weight[:,i] = tt[:,0]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:36:02