У меня есть CSR matrix:точка рутина для scipy.sparse матриц производит ошибки
>> 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
@ Justin: Размеры должны быть одинаковыми. Это строки той же матрицы. – abhinavkulkarni
Вы не можете сделать '1xn' пунктиром с' 1xn', он должен быть '1xn' пунктиром с' nx1'. Как насчет 'v1.dot (v2.transpose())'. – Justin