scipy.sparse矩阵的逐点操作

7

是否可以将例如numpy.exp或类似的逐点运算应用于scipy.sparse.lil_matrix或其他稀疏矩阵格式中的所有元素?

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矩阵的数据属性无法使用,因为它是一种对象类型的数组。 - Justin Peel
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接