скудные индексы разреженной матрицы - PullRequest
0 голосов
/ 07 декабря 2011

Когда я печатаю значения второй строки в разреженной матрице, я заметил, что первый индекс равен 0 вместо 1. См. Мой пример ниже. Почему это так?

>>> from scipy.sparse import *
>>> a=lil_matrix((100,100))
>>> a[0,0]=5
>>> a[0,1]=6
>>> a[0,20]=9
>>> print a[0,:]
(0, 0)  5.0
(0, 1)  6.0
(0, 20) 9.0
>>> a[1,5]=55
>>> a[1,50]=99
>>> print a[1,:]
(0, 5)  55.0
(0, 50) 99.0

Ответы [ 2 ]

1 голос
/ 07 декабря 2011

Поскольку a[1,:] - это разреженная матрица с одной строкой (в отличие от оригинальной a), и вы печатаете ее первую (и единственную) строку.

0 голосов
/ 10 декабря 2011

Это, вероятно, артефакт того, что происходит под капотом для списка разреженных массивов списков.Если вы печатаете весь массив, индексы верны, но если вы срежете строку, вы получите относительные индексы.Проверьте это:

>>> print a
  (0, 0)    5.0
  (0, 1)    6.0
  (0, 20)   9.0
  (1, 5)    55.0
  (1, 50)   99.0
>>> print a[1,:]
  (0, 5)    55.0
  (0, 50)   99.0

Я не заглядывал в тайну, чтобы понять, почему это происходит, но если вам действительно нужно знать, списки рассылки Numpy / SciPy действительноотзывчивый.

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