Python中用一维数组为二维数组逐列赋值报错求助
NumPy矩阵赋值广播错误解决
错误原因
你写的matrix[0:3][i]等价于matrix[i],也就是取矩阵的第i行(形状为(15,)),但要赋值的series[0:3]是长度为3的一维数组,两者形状不匹配,因此触发广播错误。另外注意你创建的变量是matrixb,循环里却用了matrix,变量名要统一。
正确赋值方法
1. 循环赋值(逐列填充)
如果要把series[0:3]的值填充到矩阵的每一列,修改索引方式即可:
# 先统一变量名为matrixb matrixb = np.zeros((3,15)) for i in range(15): # 取第i列,形状为(3,),和series[0:3]匹配 matrixb[:, i] = series[0:3]
2. 无循环批量赋值(更高效)
如果所有列都要填充同一个series[0:3],利用NumPy广播机制直接批量赋值,无需循环:
# 将series转成(3,1)的二维数组,广播到(3,15)的矩阵 matrixb[:] = series[0:3].reshape(3, 1)
内容的提问来源于stack exchange,提问作者beginner
相关产品推荐
相关产品推荐

