2011-10-27 43 views

Trả lời

63

Bạn có thể chuyển mảng hoặc ma trận cứng đầu làm đối số khi khởi tạo ma trận thưa thớt. Ví dụ, đối với một 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 
16

Có một số lớp ma trận thưa thớt trong scipy.

bsr_matrix (arg1 [, hình dạng, dtype, sao chép, kích cỡ khối]) Khối thưa thớt Row ma trận
coo_matrix (arg1 [, hình dạng, dtype, sao chép]) Một ma trận thưa thớt ở định dạng tọa độ.
csc_matrix (arg1 [, hình dạng, dtype, sao chép]) nén ma trận cột thưa thớt
csr_matrix (arg1 [, hình dạng, dtype, sao chép]) nén thưa thớt Row ma trận
dia_matrix (arg1 [, hình dạng, dtype, sao chép]) Ma trận thưa thớt với bộ nhớ DIAgonal
dok_matrix (arg1 [, hình dạng, dtype, copy]) Từ điển của ma trận thưa thớt dựa trên khóa.
lil_matrix (arg1 [, hình dạng, dtype, sao chép]) Row-based danh sách liên kết thưa thớt ma trận

Bất kỳ trong số họ 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.

3

Đối với nghịch đảo, chức năng là inv(A), nhưng tôi sẽ không khuyên bạn nên sử dụng nó, vì đối với các ma trận rất lớn, nó rất tính toán tốn kém và không ổn định. Thay vào đó, bạn nên sử dụng phép tính xấp xỉ đối với nghịch đảo hoặc nếu bạn muốn giải quyết Ax = b, bạn không thực sự cần A -1.

Các vấn đề liên quan