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
.
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
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. –
@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. –