【发布时间】:2014-10-11 14:26:27
【问题描述】:
抱歉新手问题。我正在学习使用 scipy.sparse ,但我不知道为什么这段代码不起作用。尺寸正确但无法计算减法:
c=(count_mat[i]) # c is the ith row of the sparse csr matrix count_mat, it has d # elements
l=c.sum()
second_mnt+=(1/(l*(l-1)))*((c.T*c)-spdiags(c,0,d,d))
无法计算 2 d*d 稀疏矩阵之间的减法。
编辑: 错误恰好在计算 second_mnt 的行中。所以很难认为它与两个矩阵之间的减法无关。这是完整的回溯:
Traceback (most recent call last):
File "C:/Users/hfjrk/PycharmProjects/Project/my_code_1.py", line 28, in <module>
second_mnt+=(1/(l*(l-1)))*((c.T*c)-sparse.spdiags(c,0,d,d))
File "C:\Python27\lib\site-packages\scipy\sparse\compressed.py", line 366, in __sub__
return self._binopt(other,'_minus_')
File "C:\Python27\lib\site-packages\scipy\sparse\compressed.py", line 1039, in _binopt
other = self.__class__(other)
File "C:\Python27\lib\site-packages\scipy\sparse\compressed.py", line 31, in __init__
arg1 = arg1.asformat(self.format)
File "C:\Python27\lib\site-packages\scipy\sparse\base.py", line 213, in asformat
return getattr(self,'to' + format)()
File "C:\Python27\lib\site-packages\scipy\sparse\dia.py", line 237, in tocsc
return self.tocoo().tocsc()
File "C:\Python27\lib\site-packages\scipy\sparse\coo.py", line 313, in tocsc
indptr, indices, data)
TypeError: Cannot cast array data from dtype('O') to dtype('bool') according to the rule 'safe'
【问题讨论】:
-
"无法计算 2 d*d 稀疏矩阵之间的减法" 你有错误吗?请显示完整的回溯。如果您尽可能简化代码,这将有所帮助。例如。如果您认为错误在于减法,请摆脱除减法之外的所有其他内容。
-
什么是
second_mnt?它是否正确计算右侧的表达式?换句话说,让我们确定+=是否是问题所在。 -
好吧,我将计算 second_mnt 的行分成两行。首先我将减法计算为变量 temp 然后下一行: second_mnt+=(1/(l*(l-1)))*temp/ 但错误仍然在计算 temp 的行中,表明它与减法有关。
标签: python-2.7 numpy scipy sparse-matrix