2011-03-25 66 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