>>> import numpy as np
>>> from scipy.sparse import *
>>> x1 = np.eye(3, dtype=float)
>>> x2 = csr_matrix(x1, dtype=float, shape =x1.shape)
>>> assert x2.todense().any()==x1.any() ## holds true
>>> w = np.ones((3,1))
>>> dw1 = w - x1[:,0]
>>> dw2 = w - x2[:,0]
, который дает мненеожиданный результат вызван scipy.csr_matrix
>>> print dw1
[[ 0. 1. 1.]
[ 0. 1. 1.]
[ 0. 1. 1.]]
в то время как
>>> print dw2
[[ 0.]
[ 1.]
[ 1.]]
Мой вопрос почему dw1 и dw2 отличаются? Должны ли они отложить, это ошибка? Большое спасибо!
'x2' является разреженной * матрицей * и ведет себя как плотная матрица, например. 'Np.matrix (x1)'. Здесь 'x2 [:, 0]' является (3,1) матрицей. – hpaulj