【发布时间】:2013-08-10 21:06:34
【问题描述】:
我有一个CSR matrix:
>> print type(tfidf)
<class 'scipy.sparse.csr.csr_matrix'>
我想取这个CSR matrix的两行点积:
>> v1 = tfidf.getrow(1)
>> v2 = tfidf.getrow(2)
>> print type(v1)
<class 'scipy.sparse.csr.csr_matrix'>
v1 和 v2 也是 CSR 矩阵。所以我使用dot 子程序:
>> print v1.dot(v2)
Traceback (most recent call last):
File "cosine.py", line 10, in <module>
print v1.dot(v2)
File "/usr/lib/python2.7/dist-packages/scipy/sparse/base.py", line 211, in dot
return self * other
File "/usr/lib/python2.7/dist-packages/scipy/sparse/base.py", line 246, in __mul__
raise ValueError('dimension mismatch')
ValueError: dimension mismatch
它们是同一个矩阵的行,所以它们的尺寸应该匹配:
>> print v1.shape
(1, 4507)
>> print v2.shape
(1, 4507)
为什么dot 子程序不起作用?
谢谢。
【问题讨论】:
-
你的两个矩阵的维度是多少?他们不匹配吗?
-
@Justin:尺寸应该是一样的。它们是同一个矩阵的行。
-
你不能做
1xn点缀1xn,它必须是1xn点缀nx1。v1.dot(v2.transpose())怎么样。 -
@贾斯汀:有效!谢谢!将此作为答案发布,我会接受。
标签: python scipy scikit-learn