Jak przekształcić numpy.macierz lub macierz do macierzy scipy

Dla macierzy Scypialnej można użyć todense() LUB toarray() do przekształcenia w macierz NumPy lub tablicę. Jakie są funkcje odwrotne?

Szukałem, ale nie mam pojęcia, jakie słowa kluczowe powinny być właściwym trafieniem.

Author: Tonechas, 2011-10-28

3 answers

Można przekazać tablicę numpy lub macierz jako argument podczas inicjalizacji macierzy rzadkiej. Na przykład dla macierzy CSR można wykonać następujące czynności.

>>> 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 '<type 'numpy.int32'>'
        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
 79
Author: David Alber,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-27 21:29:02

W scypiach jest kilka klas macierzy.

Bsr_matrix (arg1 [, shape, dtype, copy, blocksize]) Block Sparse Row matrix
coo_matrix (arg1 [, shape, dtype, copy]) rzadka macierz w formacie współrzędnych.
csc_matrix (arg1[, shape, dtype, copy]) Compressed Sparse Column matrix
csr_matrix (arg1[, shape, dtype, copy]) Compressed Sparse Row matrix
dia_matrix (arg1[, shape, dtype, copy])]} dok_matrix (arg1[, shape, dtype, copy]) Słownik kluczy oparty na macierzy sparse.
lil_matrix (arg1[, shape, dtype, copy]) lista linkowana oparta na wierszach macierz sparse

Każdy z nich może dokonać konwersji.
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

Zobacz http://docs.scipy.org/doc/scipy/reference/sparse.html#usage-information .

 17
Author: cyborg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-27 23:45:16

Jeśli chodzi o odwrotność, funkcja jest inv(A), ale nie polecam jej używać, ponieważ dla dużych macierzy jest bardzo kosztowna obliczeniowo i niestabilna. Zamiast tego, powinieneś użyć przybliżenia do odwrotności, lub jeśli chcesz rozwiązać Ax = b, naprawdę nie potrzebujesz-1.

 0
Author: Fernando Bastos García,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-30 23:46:03