Если я правильно понимаю, матрица проверки на четность - это пустое пространство порождающей матрицы по модулю 2. Для этого есть решение в scipy
, но эта функция дает нецелочисленное пустое пространство. Вы можете использовать sympy
, но это может быть медленным для больших матриц.
"""
>>> np.set_string_function(str)
>>> h
[[0 1 1 1 1 0 0]
[1 0 1 1 0 1 0]
[1 1 0 1 0 0 1]]
>>> (g @ h.T) % 2
[[0 0 0]
[0 0 0]
[0 0 0]
[0 0 0]]
"""
import sympy
import numpy as np
g = np.array([[1, 1, 1, 0, 0, 0, 0],
[1, 0, 0, 1, 1, 0, 0],
[0, 1, 0, 1, 0, 1, 0],
[1, 1, 0, 1, 0, 0, 1]])
h = np.array(sympy.Matrix(g).nullspace()) % 2
, где h
- это матрица проверки на четность.