python (scipy): изменение размера разреженной матрицы - PullRequest
2 голосов
/ 08 марта 2012

У меня проблемы с изменением размера матрицы - похоже, что функция set_shape не имеют никакого эффекта:

>>> M
<14x3562 sparse matrix of type '<type 'numpy.float32'>'
   with 6136 stored elements in LInked List format>
>>> new_shape = (15,3562)
>>> M.set_shape(new_shape)
>>> M
<14x3562 sparse matrix of type '<type 'numpy.float32'>'
   with 6136 stored elements in LInked List format>

Кто-нибудь еще сталкивался с этим?

Я тоже пытался сделать это вручную, т.е.

>>> M._shape = new_shape
>>> M.data = np.concatenate(M.data, np.empty((0,0), dtype=np.float32))

но это выдает ошибку:

*** TypeError: only length-1 arrays can be converted to Python scalars

или

>>> M.data = np.concatenate(M.data, [])
*** TypeError: an integer is required

Для информации:

  • Python 2.6.5 (r265: 79063, 16 апреля 2010 г., 13:57:41)
  • scipy 0.11.0.dev-03f9e4a

1 Ответ

5 голосов
/ 08 марта 2012

Если вы просто хотите добавить строку нулей в конце:

>>> M = sp.lil_matrix((14, 3562))
>>> sp.vstack([M, sp.lil_matrix((1, 3562))])
<15x3562 sparse matrix of type '<type 'numpy.float64'>'
        with 0 stored elements in COOrdinate format>
...