【发布时间】:2016-05-30 19:19:35
【问题描述】:
我有以下问题:
我有两个二进制矩阵,可能看起来像这样:
| 1 | 0 | 1 | 0 | 0 | 1 | | 1 | 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 1 | 0 | 1 | | 0 | 1 | 0 | 0 | 0 | 0 |
a = | 0 | 0 | 0 | 1 | 1 | 0 | b = | 0 | 0 | 1 | 0 | 0 | 0 |
| 1 | 0 | 0 | 0 | 0 | 1 | | 0 | 0 | 0 | 1 | 0 | 0 |
| 0 | 0 | 0 | 1 | 0 | 0 | | 0 | 0 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 0 | 0 | 1 | | 0 | 0 | 0 | 0 | 0 | 1 |
现在我想找到矩阵 a 的行梯形(不一定是简化的行梯形),然后对矩阵 b 应用相同的矩阵运算,这将导致如下结果:
| 1 | 0 | 1 | 0 | 0 | 1 | | 1 | 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 1 | 0 | 1 | | 0 | 1 | 0 | 0 | 0 | 0 |
a = | 0 | 0 | 1 | 0 | 0 | 0 | b = | 1 | 0 | 0 | 1 | 0 | 0 |
| 0 | 0 | 0 | 1 | 1 | 0 | | 0 | 0 | 1 | 0 | 0 | 0 |
| 0 | 0 | 0 | 0 | 1 | 0 | | 0 | 0 | 1 | 0 | 1 | 0 |
| 0 | 0 | 0 | 0 | 0 | 0 | | 1 | 0 | 1 | 0 | 1 | 1 |
使用 numpy 将第一个矩阵转换为 rref 效果很好,除了我无法知道执行了哪些行操作,因此我无法对第二个矩阵应用相同的操作。
现在这只是一个示例,但实际矩阵将是 50.000x50.000 或更大,不一定是正方形。我尝试实施自己的解决方案,但它太慢了。 有没有什么东西可以做我想做的事,还是我必须尝试优化自己的解决方案?
感谢您的帮助
/莫腾
【问题讨论】:
-
我对线性代数生疏了,你检查过这个页面看看有没有用? docs.scipy.org/doc/numpy/reference/routines.linalg.html
标签: python numpy matrix scipy linear-algebra