Python:在数组上尝试[:,x]命令时出现索引错误

时间:2014-02-15 20:00:14

标签: python arrays numpy indexing

我是python的新手,所以我很抱歉,如果我的格式等不好或者这个问题是微不足道的,但我想弄清楚为什么我在第三个(我假设第二个)得到一个索引错误我的代码行。我只为上下文包含该函数,因此您可以看到我调用的数组派生自的QR函数。给出索引错误的命令在代码的第二行中起作用,但在倒数第二行中起作用。谁能解释为什么会这样?我认为它与a_new是一个数组的事实有关?

另外,根据我的理解,[:,0]从矩阵或数组中取出第一列。如果这种理解不正确,我也很想学习正确的方法。

谢谢!

a=np.random.random((3,3)); a
a[:,2]


###Gram-Schmidt operation for finding Q orthonormal matrix
###We begin with the reduced 3X3 case
def QR(a):  
     A0=a[:,0]; A0
     A1=a[:,1]; A1
     A2=a[:,2]; A2   

     Z0=A0
     Z1=A1-np.vdot(A1,A0)/np.vdot(A0,A0)*A0
     Z2=A2-np.vdot(A2,A0)/np.vdot(A0,A0)*A0-np.vdot(A2,Z1)/np.vdot(Z1,Z1)*Z1

     Z0norm=np.linalg.norm(Z0); Z0norm
     Z1norm=np.linalg.norm(Z1); Z1norm
     Z2norm=np.linalg.norm(Z2); Z2norm

     q0=Z0/Z0norm
     q1=Z1/Z1norm
     q2=Z2/Z2norm

     a_new=np.array([[q0],[q1],[q2]])

     return a_new

a_new=QR(a); a_new
a_new0=a_new[:,0]
a_new1=a_new[:,1]
g1=np.vdot(a_new1,a_new2); g1   
编辑:对不起!以下是错误消息:

  
    
      

a_new0 a_new进行= [:,0]       a_new1 a_new进行= [:,1]       Traceback(最近一次调用最后一次):         文件“”,第1行,in         IndexError:索引1超出轴1的大小为1

    
  

0 个答案:

没有答案