У меня есть две симметричные (совмещение элементов) матрицы A и B, и я хочу выяснить, описывают ли они одно и то же совместное вхождение, только с переставленными метками строк / столбцов. (Та же перестановка должна применяться к строкам и столбцам, чтобы сохранить свойство симметрии / совместного появления)
Например, эти две матрицы должны быть равны в моем тесте:
a = np.array([
#1 #2 #3 #4 #5 #6 #7
[0, 1, 1, 0, 0, 0, 1], #1
[1, 0, 1, 2, 1, 1, 2], #2
[1, 1, 0, 0, 0, 0, 1], #3
[0, 2, 0, 0, 4, 0, 4], #4
[0, 1, 0, 4, 0, 1, 2], #5
[0, 1, 0, 0, 1, 0, 0], #6
[1, 2, 1, 4, 2, 0, 0] #7
])
b = np.array([
#5 #7 #1,3#3,1#2 #4 #6
[0, 2, 0, 0, 1, 4, 1], #5
[2, 0, 1, 1, 2, 4, 0], #7
[0, 1, 0, 1, 1, 0, 0], #1,3 could be either
[0, 1, 1, 0, 1, 0, 0], #1,3 could be either
[1, 2, 1, 1, 0, 2, 1], #2
[4, 4, 0, 0, 2, 0, 0], #4
[1, 0, 0, 0, 1, 0, 0] #6
])
В настоящее время я проверяю, совпадают ли собственные значения, используя numpy.linalg.eigvals
(я даже не уверен, что это достаточное условие), но я хотел бы найти тест, который не связан с числовой точностью, так как я имею дело с целые числа здесь.