2011-06-21 57 views
14

Làm cách nào để tăng ma trận scipy.sparse lên sức mạnh, yếu tố khôn ngoan? numpy.power nên, theo its manual, làm được điều này, nhưng nó không thành công trên ma trận thưa thớt:Sức mạnh nguyên tử của ma trận scipy.sparse

>>> X 
<1353x32100 sparse matrix of type '<type 'numpy.float64'>' 
     with 144875 stored elements in Compressed Sparse Row format> 

>>> np.power(X, 2) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File ".../scipy/sparse/base.py", line 347, in __pow__ 
    raise TypeError('matrix is not square') 
TypeError: matrix is not square 

Cùng một vấn đề với X**2. Chuyển đổi thành một mảng dày đặc hoạt động, nhưng lãng phí giây quý giá.

Tôi đã gặp sự cố tương tự với np.multiply, tôi đã giải quyết bằng phương pháp multiply của ma trận thưa thớt, nhưng dường như không có phương pháp pow.

+0

Tôi không đủ quen thuộc với câu hỏi để trả lời, nhưng mã của bạn không mâu thuẫn với tài liệu. Đối số thứ hai cho numpy.power không phải là một số, mà là một ma trận khác. – RoundTower

+0

Có vẻ như nó đang gọi phương thức '__pow__' của đối tượng, đang cố gắng làm vuông toàn bộ ma trận, thay vì thực hiện nó theo nguyên tắc. Điều đó thất bại bởi vì, như nó nói, ma trận không phải là hình vuông. –

+0

@RoundTower: thực ra, phần tử thứ hai phải là một mảng, mà nó không giống như một ma trận trong Numpy, nhưng một vô hướng giống với một mảng '(1,)' hoặc '(1,1)' cho mục đích của 'numpy.power' trên một mảng dày đặc. –

Trả lời

9

Đây là một chút ở mức độ thấp, nhưng đối với các hoạt động tố khôn ngoan, bạn có thể làm việc với các mảng dữ liệu cơ bản trực tiếp:

>>> import scipy.sparse 
>>> X = scipy.sparse.rand(1000,1000, density=0.003) 
>>> X = scipy.sparse.csr_matrix(X) 
>>> Y = X.copy() 
>>> Y.data **= 3 
>>> 
>>> abs((X.toarray()**3-Y.toarray())).max() 
0.0 
4

Tôi chỉ chạy vào cùng một câu hỏi và thấy rằng ma trận thưa thớt bây giờ hỗ trợ yếu tố công suất lớn. Đối với trường hợp trên, phải là:

X.power(2) 
+0

Đây có phải là python 2.7 không? –

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