дополнительный столбец и строка при преобразовании в матрицу lil - PullRequest
0 голосов
/ 09 января 2020

Это относится ко второй части вопроса: pandas дата-кадр для матрицы coo и для lil matix

import scipy.sparse as sps
print(len(networks[0]), len(networks[1]), networks[0].nunique(), networks[1].nunique())
667966 667966 10312 10312
networks[:5]



     0   1
0   176 1
1   233 1
2   283 1
3   371 1
4   394 1

сделать метки строк и столбцов

rows = networks[0]
cols = networks[1]



matrix = sps.coo_matrix((networks[2], (rows, cols)))
d=matrix.tolil()
d

генерирует

<10313x10313 sparse matrix of type '<class 'numpy.uint32'>'
    with 667966 stored elements in LInked List format>

Мой вопрос: почему форма 10313x10313 вместо 10312x10312, потому что есть 10312 уникальные элементы?

обратите внимание, что networks[[0, 1]] являются ребрами.

Ответы [ 2 ]

0 голосов
/ 09 января 2020

требуется все имеет индекс:

networks.set_index([0, 1], inplace=True)
Ntw= sps.coo_matrix((networks[2], (networks.index.labels[0], networks.index.labels[1])))
d=Ntw.tolil()
Ntw.shape

генерирует:

<10312x10312 sparse matrix of type '<class 'numpy.int64'>'
    with 667966 stored elements in LInked List format>
0 голосов
/ 09 января 2020

Посмотрите на небольшой пример:

In [458]: rows=np.arange(5); cols=rows; data = np.ones(len(rows), int)          
In [459]: M = sparse.coo_matrix((data, (rows, cols)))                           
In [460]: M                                                                     
Out[460]: 
<5x5 sparse matrix of type '<class 'numpy.int64'>'
    with 5 stored elements in COOrdinate format>
In [461]: max(rows)                                                             
Out[461]: 4

In [463]: M.row                                                                 
Out[463]: array([0, 1, 2, 3, 4], dtype=int32)
In [464]: print(M)                                                              
  (0, 0)    1
  (1, 1)    1
  (2, 2)    1
  (3, 3)    1
  (4, 4)    1

In [465]: M.A                                                                   
Out[465]: 
array([[1, 0, 0, 0, 0],
       [0, 1, 0, 0, 0],
       [0, 0, 1, 0, 0],
       [0, 0, 0, 1, 0],
       [0, 0, 0, 0, 1]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...