Меня немного смущает поведение оператора умножения *
, когда задействованы нечеткие разреженные матрицы. Кажется, что оператор реализует матричное умножение, а не покомпонентное умножение, как это было бы с множеством массивов.
Какой-то код, чтобы проверить это:
from scipy.sparse import lil_matrix
A = lil_matrix(-numpy.eye(2))
b = lil_matrix(numpy.ones((2,2)))
print (A * B).toarray()
приводит к:
[[-1. -1.]
[-1. -1.]]
документация модуля scipy.sparse
на самом деле не вдаваться в подробности об этом, и мне интересно, есть ли где-нибудь четкая спецификация поведения умножения?
Кроме того, существуют ли какие-то четко определенные правила для оператора умножения с scipy разреженными матрицами и numpy-матрицами или массивами?