ручное преобразование CSR в плотную матрицу, когда rowptr имеет одинаковое число - PullRequest
0 голосов
/ 09 октября 2018

мой код работает, если row не имеет повторяющихся чисел.но я не могу найти способ справиться с последовательными числами, которые одинаковы.в матрице CSR, если число совпадает с номером следующего числа, строка должна иметь все нули.

import numpy as np

count = 0
row_numb = -1

data = [1,1,1,2,2,4,5,5,5]
col_index = [0,1,4,1,2,3,2,3,4]
row = [0,3,5,5,6,9] # consecutive 5's are a problem
A = np.zeros((5,5))

for i, col in zip(data,col_index):
    if count in row[:-1]:
        row_numb += 1
    A[row_numb][col] = i
    count += 1
print(A)

с моим кодом A будет выглядеть так:

[[1. 1. 0. 0. 1.]
 [0. 2. 2. 0. 0.]
 [0. 0. 0. 4. 0.]
 [0. 0. 5. 5. 5.]
 [0. 0. 0. 0. 0.]]

, ноправильный вывод должен иметь индекс строки 2, равный нулю, а остальные сдвинуты вниз на 1 строку.который будет выглядеть так:

[[1. 1. 0. 0. 1.]
 [0. 2. 2. 0. 0.]
 [0. 0. 0. 0. 0.]
 [0. 0. 0. 4. 0.]
 [0. 0. 5. 5. 5.]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...