2011-03-25 65 views
7

是否可以將numpy.exp或類似的點運算符應用於scipy.sparse.lil_matrix或其他稀疏矩陣格式中的所有元素?scipy.sparse矩陣上的逐點運算

import numpy 
from scipy.sparse import lil_matrix 

x = numpy.ones((10,10)) 
y = numpy.exp(x) 

x = lil_matrix(numpy.ones((10,10))) 
# y = ???? 

numpy.exp(x)scipy.exp(x)產生一個AttributeError,並numpy.exp(x.data)產生相同的。

謝謝!

+1

我認爲,目前這不是在做任何的工作稀疏矩陣格式。就個人而言,我認爲應該制定單獨的稀疏函數,而不是放慢正常的函數。如Olivier所示,解決方法是將其轉換爲基本上任何其他稀疏格式,並處理'data'屬性。 lil矩陣的數據屬性不適用於此,因爲它是一個類型爲object的數組。 – 2011-03-25 15:15:13

回答

6

我不知道的全部細節,但轉換成另一種類型的作品,使用非零個元素的數組至少在:

xcsc = x.tocsc() 
numpy.exp(xcsc.data) # works 
+2

是的。正如它在文檔http://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.lil_matrix.html中所述,lil格式主要用作構建稀疏數組而不執行操作的方法。文檔建議在數組構建完成後進行這種轉換。 – Paul 2011-03-25 15:04:07