(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 № 1Isso 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.