2
我有numpy
數組Z
形狀(k,N)
和第二個陣列X
形狀(N,n)
。使用廣播與稀疏scipy矩陣
使用numpy
廣播,我可以很容易地獲得新的陣列H
與形狀(n,k,N)
其切片陣列Z
其行已經乘的X
列:
H = Z.reshape((1, k, N)) * X.T.reshape((n, 1, N))
這工作得很好,是出奇的快。 現在,X
是非常稀疏的,我想用稀疏矩陣操作進一步加速這個操作。
但是如果我執行以下操作:
import scipy.sparse as sprs
spX = sprs.csr_matrix(X)
H = (Z.reshape((1,k,N))*spX.T.reshape((n,1,N))).dot(Z.T)
我得到以下錯誤:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "C:\Python27\lib\site-packages\scipy\sparse\base.py", line 126, in reshape
self.__class__.__name__)
NotImplementedError: Reshaping not implemented for csc_matrix.
是否有使用稀疏矩陣scipy
廣播的方式?
除了2d限制之外,稀疏數學只適用於其他稀疏矩陣。在處理密集數組時,稀疏矩陣轉換爲密集矩陣。用'spX'來玩耍,看看各種數學運算會發生什麼。 – hpaulj