python - 乘法适用于密集矩阵,但不适用于压缩行矩阵

标签 python numpy matrix scipy

这是我的变量:

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

谁能解释一下为什么会出现这种情况?据我所知,这应该有效。我可能忽略了一些事情。

最佳答案

出现这种情况是因为这些示例不是等效的代码段。如果你有的话,等价的是

> Y = np.matrix(np.ones((1024, 1))
> X = np.matrix(np.ones((1024, 1))
> YY = Y * 2
> (YY - X) * X

这会给你ValueError:矩阵未对齐。 NumPy 具有 array 类和 matrix 类,并且 array 乘法与 matrix 乘法不同。使用 np.ones,您可以构造一个数组,数组乘法是逐点的,而矩阵乘法是 Matrix Multiplication

关于python - 乘法适用于密集矩阵,但不适用于压缩行矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25088953/

相关文章:

python - 如何计算 python 线性回归模型中斜率的 99% 置信区间?

python - 移动平均线或移动平均线

python - 在同一个图上一起绘制两个距离矩阵?

python - 将python矩阵切成象限

python - 使用 XLRD 验证单元格值

Python DictWriter 编写 UTF-8 编码的 CSV 文件

python - 将经过训练的 xgboost 分类器从 AWS s3 上传到 EMR

python - 有没有办法将 numpy 数组作为 luigi.Parameter 中的默认值?

python - 生成随机数以测试核密度估计

C++:调整二维 vector 的大小