/ / Preencher uma matriz esparsa de CSR vazia com colunas de outra matriz de csr e fatiá-la - python, scipy, sparse-matrix

Preencher uma matriz esparsa de CSR vazia com colunas de outra matriz de csr e fatiá-la - python, scipy, sparse-matrix

(Python) Alguém pode sugerir a maneira mais fácil e rápida de preencher uma matriz de RSE com os valores das colunas de outra matriz CS, que é de tamanho 400k * 800k. Minha tentativa falhada:

#x is a list of size 500 which contains the column numbers needed from B
A=sparse.csr_matrix((400000,500))

for i in range(400000):
for j in range(500):
A[i,j]=B[i,x[j]]

Também existe uma maneira fácil de dividir a matriz B na proporção de 4: 1

Respostas:

0 para resposta № 1

Isso ajuda a pensar sobre o problema como se A e B Ambos foram densamente arrays primeiro. Se eu entendi sua pergunta corretamente, você quer algo como:

A = B[:, x]

Acontece que você pode fazer a mesma operaçãocom matrizes CSR também, e é razoavelmente eficiente. A chave é evitar a atribuição de valores a uma matriz esparsa existente (especialmente se estiver em formato CSR ou CSC). Ao fazer a indexação de uma só vez, o scipy é capaz de usar métodos mais eficientes.