我有一个n +1 × n整数矩阵.我想找到一个线性组合的行减少到零mod 2.我该如何在Python中实现这一点?我可以自己写高斯消元,我觉得应该有一种方法可以用numpy或其他库来做到这一点,而不用从头开始写.示例:

我有矩阵

[1,3,0]

[1,1,0]

[1,0,1]

[0,1,5]

函数返回[1,0,1,1].因为这个线性组合产生[2,4,6]=[0,0,0] mod 2.

推荐答案

您可以使用galois:

from galois import GF2
import numpy as np

A = [[1, 3, 0], 
     [1, 1, 0],
     [1, 0, 1],
     [0, 1, 5]]

A = GF2(np.array(A).T % 2)
print(A.null_space())

它提供:

[[1 0 1 1]
 [0 1 1 1]]

行是域F_2上矩阵的零空间的基.

Python相关问答推荐

如何根据情况丢弃大Pandas 的前n行,使大Pandas 的其余部分完好无损

使用pandas、matplotlib和Yearbox绘制时显示错误的年份

acme错误-Veritas错误:模块收件箱没有属性linear_util'

为什么这个带有List输入的简单numba函数这么慢

我们可以为Flask模型中的id字段主键设置默认uuid吗

OR—Tools CP SAT条件约束

基于索引值的Pandas DataFrame条件填充

计算分布的标准差

使用groupby方法移除公共子字符串

解决调用嵌入式函数的XSLT中表达式的语法移位/归约冲突

LocaleError:模块keras._' tf_keras. keras没有属性__internal_'''

Pandas:计算中间时间条目的总时间增量

OpenCV轮廓.很难找到给定图像的所需轮廓

通过追加列表以极向聚合

并行编程:同步进程

如何在FastAPI中替换Pydantic的constr,以便在BaseModel之外使用?'

Python Mercury离线安装

Pandas:将值从一列移动到适当的列

修改.pdb文件中的值并另存为新的

为什么在生成时间序列时,元组索引会超出范围?