У меня следующая проблема.
Учитывая, что у меня есть 9x9 разреженная единичная матрица var
и логическая матрица 3x3 bol
, где позиция (2,2) имеет значение False.
В Matlab я могу удалить строки, подобные этой
var1 = speye(9);
bol=false(3,3);
bol(3:3,1:3)=1;
bol(1:3,1:1)=1;
bol(1:1,1:3)=1;
bol(1:3,3:3)=1;
var1(bol(:),:)=[];
, и я получаю результат
var1 =
(1,5) 1
Как я могу сделать это так просто в Python?
В Python я создал переменные, подобные этим:
import numpy as np
from scipy import sparse
var1 = sparse.eye(9).tocsc()
bol = np.zeros((3,3),dtype='bool')
bol[2:3,0:3]=1
bol[0:3,0:1]=1
bol[0:1,1:3]=1
bol[0:3,-1]=1
Я также создаю var1_del
в Python, что-то вроде var1(bol(:),)
в Matlab
va1_del = var1[bol.reshape(9)[:],:]
это был мойпопробуйте удалить строки.Результат явно неправильный
var1 = [x for x in var1 if not x in var_del]
var1 =
[]
У вас есть идея, как заставить это работать?