首页 > 解决方案 > NumPy 列更改值或添加

问题描述

我编写了如下代码:

# weight shape will be as (108, 796)
Weight = np.zeros((xm_a*xm_b,data1_a))

# tt shape will be as (108, 1)
tt = np.reshape(AR[:,:,i].T,(AR_a*AR_b,1),order='F')

for i ...:
   ...
   Weight[:,i] = tt

运行代码时,将出现与最后一行相关的以下错误:

ValueError:无法将输入数组从形状 (108,1) 广播到形状 (108,)

那么如何解决这个问题呢?我是 python 新手。

标签: pythonnumpy

解决方案


根据我对问题的理解,我们可以创建一个示例数据,例如:

Weight = np.array([[3, 4], [4, 2], [6, 3]])
tt = np.array([[7], [17], [177]])

现在,我们可以使用新的tt替换权中的柱状:

for i in range(2):
    Weight[:, i] = tt[:, 0]

其中Weight将根据tt进行如下更改:

新权重 = np.array([[7, 7], [17, 17], [177, 177]])

对于tt在循环期间何时发生变化,例如,如果:

tt = [np.array([[7], [17], [177]]), np.array([[5], [15], [155]])]

我们可以使用tt列表中的每个子 tt替换权重中的柱状:

for i, j in enumerate(tt):
    Weight[:, i] = j[:, 0]

这将导致新的权重为:

新权重 = np.array([[7, 5], [17, 15], [177, 155]])


推荐阅读