У меня есть две разреженных матриц (a
и b
) в питоне следующих размеров:Dot продукта разреженные матрицы
a = <240760x2177930 sparse matrix of type '<class 'numpy.float64'>'
with 1127853 stored elements in Compressed Sparse Row format>
и
b = <240760x2177930 sparse matrix of type '<class 'numpy.float64'>'
with 439309 stored elements in Compressed Sparse Row format>
Вопрос: Я хотел бы получить вектор-столбец длиной 240760, который является произведением строки по двум точкам двух матриц. Например, dot(a[0],b[0])
будет первым элементом моего выходного вектора. dot(a[1],b[1])
будет вторым, и так далее.
Есть ли векторный простой способ достичь этого?
EDIT: Один из способов сделать это было бы преобразовать каждую строку в плотный вектор, расправьте его и использовать numpy.dot()
. Что-то вроде:
np.dot(np.array(a[0]).flatten(),np.array(b[0]).flatten()).
Но это требует итерация грести мудрой и преобразовать каждую строку в плотный вектор, который очень много времени. Я думаю, что, вероятно, более простой способ сделать это ...
Это сделало бы это: 'a.multiply (b) .sum (1)'? Он дает вектор правильной длины, я просто не уверен, что он делает. Весь API 'csr_matrix' настолько незначителен мне. – David