Đối với ma trận thưa thớt SciPy, người ta có thể sử dụng todense()
hoặc toarray()
chuyển đổi thành ma trận hoặc mảng NumPy. Các chức năng để thực hiện nghịch đảo là gì?
Tôi đã tìm kiếm, nhưng không biết từ khóa nào nên được nhấn đúng.
Câu trả lời:
Bạn có thể chuyển một mảng hoặc ma trận không có nhiều làm đối số khi khởi tạo một ma trận thưa thớt. Ví dụ: đối với ma trận CSR, bạn có thể làm như sau.
>>> 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
sparse.csr_matrix
Có một số lớp ma trận thưa thớt trong scipy.
bsr_matrix (arg1 [, shape, dtype, copy, blocksize]) Block
Sprse Row ma trận coo_matrix (arg1 [, shape, dtype, copy]) Ma trận thưa thớt ở định dạng COOrdinate.
csc_matrix (arg1 [, shape, dtype, copy]) Ma trận cột thưa thớt được nén
csr_matrix (arg1 [, shape, dtype, copy]) Ma trận hàng thưa thớt được nén
dia_matrix (arg1 [, shape, dtype, copy]) Ma trận thưa với lưu trữ
DIAgonal dok_matrix (arg1 [, shape, dtype, copy]) Dictionary Of Keys dựa trên ma trận thưa thớt.
lil_matrix (arg1 [, shape, dtype, copy]) Ma trận thưa thớt danh sách liên kết dựa trên hàng
Bất kỳ ai trong số họ đều có thể thực hiện chuyển đổi.
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
Xem http://docs.scipy.org/doc/scipy/reference/sparse.html#usage-information .
Đối với hàm nghịch đảo, inv(A)
nhưng tôi không khuyên bạn nên sử dụng nó, vì đối với ma trận lớn, nó rất tốn kém về mặt tính toán và không ổn định. Thay vào đó, bạn nên sử dụng một xấp xỉ nghịch đảo, hoặc nếu bạn muốn giải Ax = b, bạn không thực sự cần A -1 .