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

Python:在数组上尝试[:,x]命令时出现索引错误,python,arrays,numpy,indexing,Python,Arrays,Numpy,Indexing,我是python新手,所以如果我的格式设置不好,等等,或者如果这个问题很简单,我很抱歉,但是我正在试图弄清楚为什么我的代码从第三行(我假设是第二行)到最后一行会出现索引错误。我包含的函数仅用于上下文,因此您可以看到我调用的数组派生自的QR函数。给出索引错误的命令在代码的第二行工作,但不是倒数第二行。有人能解释为什么会这样吗?我认为这与一个新的数组这一事实有关 而且,据我所知,[:,0]从矩阵或数组中获取第一列。如果这种理解是不正确的,我也愿意学习正确的方法 谢谢 a=np.random.rand

我是python新手,所以如果我的格式设置不好,等等,或者如果这个问题很简单,我很抱歉,但是我正在试图弄清楚为什么我的代码从第三行(我假设是第二行)到最后一行会出现索引错误。我包含的函数仅用于上下文,因此您可以看到我调用的数组派生自的QR函数。给出索引错误的命令在代码的第二行工作,但不是倒数第二行。有人能解释为什么会这样吗?我认为这与一个新的数组这一事实有关

而且,据我所知,[:,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] 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 索引器:索引1超出大小为1的轴1的界限


你看到错误信息了吗?也许这会让问题变得显而易见?我做到了。但我不明白。索引器:对于大小为1的轴1,索引1超出范围。对于3X3矩阵,这有什么意义?这是我问题的关键。为什么我要用3X3得到这个?嗯,如果其他人能看到错误信息。也许如果有人把它贴在这里……为什么你这么确信一个新的
是3x3?您是否尝试过查看它,或检查一个新的.shape
?(剧透警报:不是。)哦,谢谢。我想这回答了我的问题。我现在觉得自己很笨。谢谢:)