scipy sparse マトリックス タイプと通常の numpy マトリックス タイプの間には、いくつかの不一致があるようです。
import scipy.sparse as sp
A = sp.dia_matrix(tri(3,4))
vec = array([1,2,3,4])
print A * vec #array([ 1., 3., 6.])
print A * (mat(vec).T) #matrix([[ 1.],
# [ 3.],
# [ 6.]])
print A.todense() * vec #ValueError: matrices are not aligned
print A.todense() * (mat(vec).T) #matrix([[ 1.],
# [ 3.],
# [ 6.]])
通常の行列ではできないのに、配列を列ベクトルとして解釈する必要があるのに、なぜスパース行列でうまくいくのでしょうか?