以下是我的变数:
In [232]:Y=np.ones((1024,1))
In [233]:X=np.ones((1024,1))
In [234]:YY=Y*2
这有效:
In [235]:(YY-X)*X
然而,这不是:
In [236]:(scipy.sparse.csr_matrix(YY)-scipy.sparse.csr_matrix(X))*scipy.sparse.csr_matrix(X)
导致:
ValueError: dimension mismatch
现在,如果我想这样做:
In [245]: XX=scipy.sparse.csr_matrix(X)
In [246]: YYY=scipy.sparse.csr_matrix(YY)
In [247]: (YYY-XX)*XX
ValueError: dimension mismatch
In [255]: (YYY.todense()-XX.todense())*XX.todense()
ValueError: matrices are not aligned
任何人都能解释为什么会这样吗?据我所知,这应该有效。我可能忽视了一些事情。
答案 0 :(得分:2)
这是因为这些示例不是等效的代码片段。如果你有
,那将是相同的> Y = np.matrix(np.ones((1024, 1))
> X = np.matrix(np.ones((1024, 1))
> YY = Y * 2
> (YY - X) * X
这会给你ValueError: matrices are not aligned
。 NumPy具有array
类和matrix
类,array
乘法与matrix
乘法不同。使用np.ones
,您构建array
,array
乘法是逐点的,而matrix
乘法是Matrix Multiplication。