在Python中删除NumPy矩阵的列,并保留所有其他列的索引

2024-10-03 00:30:28 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有矩阵:

[[1 2 3]
 [4 5 6]]

列索引为0、1和2。你知道吗

如果使用SciPydelete删除列0,则矩阵将变为:

[[2 3]
 [5 6]]

列索引为1,2而不是0,1。你知道吗

考虑以下代码:

while (np.linalg.norm(r))>0.0001 and (phi!=[]):
     col=phi.shape[1]
    rdotphi0=np.dot(r,phi[:,0])
    while (i in range(1,col)):
        rdotphi=np.dot(r,phi[:,i])
        if(abs(rdotphi)>abs(rdotphi0)):
            max=i
            rdotphi0=rdotphi
        i=i+1
    l.append(max)
    x[max]=rdotphi0
    r=r-(phi[:,max]*rdotphi0)
    phi=scipy.delete(phi,max,1)`

我需要使用原始索引附加l,但同时我处于循环中,必须处理包含已删除列的新子矩阵。你知道吗


Tags: and代码normnp矩阵colabsdot
1条回答
网友
1楼 · 发布于 2024-10-03 00:30:28

我这样做的一种方法是不删除列,而是跳过它们:

l=[]
while (np.linalg.norm(r))>0.0001 and (len(l)!=N):
    while i in range(0,col):
        if i in l:
            i+=1
            continue
        else:   
            rdotphi0=np.dot(r,phi[:,i])
            j=i
            m=i
            break
        i+=1    
    print(rdotphi0)
    while i in range(j+1,col):
        if i in l:
            i+=1
            continue
        else:   
            rdotphi=np.dot(r,phi[:,i])
            print(rdotphi)
            if(abs(rdotphi)>abs(rdotphi0)):
                m=i
                rdotphi0=rdotphi
                i+=1        
    print(m)
    l.append(m)     
    x[m]=rdotphi0
    r=r-phi[:,m]*rdotphi0`

相关问题 更多 >