在for循环中行到列

时间:2016-10-22 05:59:18

标签: python for-loop row

我正在尝试在for循环中使用列向量。它作为一列进入,但作为行出去,这导致循环中的问题因为我得到错误

  

ValueError:无法将形状(2,2)的输入数组广播为形状(2,)

请帮忙。它是怎么回事:

我有一个Xtrue值,输出为

Out[77]: 
array([[ 44.3161691],
   [-10.5871559]])

然后我进入循环:

xk_1 = Xtrue #initialization before loop
n=103.789 #calculated under some other concept
t=int(float(np.floor(n)))-1 #number of iterations
for k in range(0,t,1):
       xk_1[:,k] = A.dot(xk_1[:,k-1]) + B.dot(U) #B.dot(U) is a standard value

B.dot(U)的输出为(2,1)

array([[-4.903325],
   [-9.80665 ]])

A=array([[1, 1],
   [0, 1]])

此处A.dot(xk_1[:,k-1])带有(2,)形状的内容:

array([ 35.15803805,  -9.87264348])

它应该具有(2,1)

形状

这里重要一点是,当(2,k)时,我需要乘法的第k个值,因为这就是整个系统的工作原理。

1 个答案:

答案 0 :(得分:0)

xk_1[:,k-1]具有(2,)的形状,因此A.dot(xk_1[:,k-1])也是(2,)的原因。然后将(2,)添加到(2,1)将导致(2,2),从而导致错误。

您始终可以使用以下内容将行向量(k,)更改为列向量(k,1)

my_array.shape = -1,1 # inplace

my_array.reshape((-1,1)) # returns a new array

-1表示自动检测尺寸大小,在您的情况下,它相当于2。)