Скажем, у меня есть Numpy массив p
и SciPy разреженную матрицу q
таким образом, чтоDot продукта между 1D Numpy массива и SciPy разреженная матрица
>>> p.shape
(10,)
>>> q.shape
(10,100)
Я хочу сделать скалярное произведение р и д. Когда я пытаюсь с NumPy я получаю следующее:
>>> np.dot(p,q)
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist packages/IPython/core/interactiveshell.py", line 2883, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-96-8260c6752ee5>", line 1, in <module>
np.dot(p,q)
ValueError: Cannot find a common data type.
я вижу в том, что Scipy documentation
По NumPy 1,7, np.dot не знает разреженных матриц, поэтому используя это приведет по неожиданным результатам или ошибкам. Вместо этого должна быть получена соответствующая плотная матрица
Но это наносит ущерб моей цели использования разреженной матрицы. Soooo, как мне делать точечные продукты между разреженной матрицей и массивом 1D numpy (матрица numpy, я открыт для обоих), не теряя разреженности моей матрицы?
Я использую Numpy 1.8.2 и Scipy 0.15.1.
И помните о предстоящем умножении @ для mATtrix https://www.python.org/dev/peps/pep-0465/ –