Як ператварыць numpy.matrix або масіў SciPy разрэджанай матрыцы

Для SciPy разрэджанай матрыцы, можна выкарыстоўваць todense() або ToArray() пераўтварыць у матрыцу NumPy або масіва. Якія функцыі зрабіць адваротнае?

Я шукаў, але не атрымаў ні найменшага падання, што ключавыя словы павінны быць правільны ўдар.

43

3 адказы

Вы можаце перадаць Numpy масіў або матрыцу ў якасці аргументу пры ініцыялізацыі разрэджанай матрыцы. Для матрыцы КСА, напрыклад, вы можаце зрабіць наступнае.

>>> import numpy as np
>>> from scipy import sparse
>>> A = np.array([[1,2,0],[0,0,3],[1,0,4]])
>>> B = np.matrix([[1,2,0],[0,0,3],[1,0,4]])

>>> A
array([[1, 2, 0],
       [0, 0, 3],
       [1, 0, 4]])

>>> sA = sparse.csr_matrix(A)   # Here's the initialization of the sparse matrix.
>>> sB = sparse.csr_matrix(B)

>>> sA
<3x3 sparse matrix of type ''
        with 5 stored elements in Compressed Sparse Row format>

>>> print sA
  (0, 0)        1
  (0, 1)        2
  (1, 2)        3
  (2, 0)        1
  (2, 2)        4
75
дададзена

Ёсць некалькі разрэджаных класаў матрыц у SciPy.

<Р> bsr_matrix (арг1 [ форма, DTYPE, капіяваць, размер_блока]) Блок разрэджаных радкоў матрыцы
  coo_matrix (arg1 [ форма, DTYPE, копія]) разрэджаная матрыца ў каардынатнай фармат.
  csc_matrix (arg1 [ форма, DTYPE, копія]) Сціснутае разрэджаных калонкі матрыца
  csr_matrix (arg1 [ форма, DTYPE, копія]) Сціснутае разрэджаных радкоў матрыцы
  dia_matrix (arg1 [ форма, DTYPE, копія]) разрэджаная матрыца з дыяганальнымі захоўвання
  dok_matrix (arg1 [ форма, DTYPE, копія]) Слоўнік ключоў на аснове разрэджаных матрыц.
  lil_matrix (арг1 [ форма, DTYPE, капіяваць]) радкі на аснове звязанага спісу разрэджаная матрыца

Любы з іх можа зрабіць пераўтварэнне.

import numpy as np
from scipy import sparse
a=np.array([[1,0,1],[0,0,1]])
b=sparse.csr_matrix(a)
print(b)

(0, 0)  1
(0, 2)  1
(1, 2)  1

См http://docs.scipy.org/doc/scipy/ спасылка/sparse.html # выкарыстанне-інфармацыя .

17
дададзена

Што тычыцца зваротнага, функцыі і (A) , але я не рэкамендую выкарыстоўваць яго, так як для вялікіх матрыц гэта вельмі вылічальная дорага і нестабільна. Замест гэтага, вы павінны выкарыстоўваць набліжэнне да адваротнага, або калі вы хочаце вырашыць Ах = Ь вы на самой справе не патрэбныя А -1 .

0
дададзена
Пытанне пытаецца, як генераваць SciPy разрэджанай матрыцы, выкарыстоўваючы матрыцу Numpy/масіў, а не інверсію ў якасці матрычнай аперацыі.
дададзена аўтар Virgil Ming, крыніца