簡體   English   中英

scipy.sparse矩陣的元素功效

[英]Element-wise power of scipy.sparse matrix

如何將scipy.sparse矩陣提升為冪,以元素為單位? 根據它的手冊numpy.power應該這樣做,但它在稀疏矩陣上失敗了:

>>> 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

X**2相同的問題。 轉換為密集陣列有效,但浪費了寶貴的秒數。

我和np.multiply有同樣的問題,我用稀疏矩陣的multiply來解決,但似乎沒有pow方法。

這有點低級,但對於元素操作,您可以直接使用底層數據數組:

>>> 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

我剛剛遇到了同樣的問題,發現稀疏矩陣現在支持元素功率。 對於上述情況,它應該是:

 X.power(2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM