У меня есть две симметричные (совпадение элементов) матрицы 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
(я даже не уверен, что это достаточное условие), но я хотел бы найти тест, который не требует числовой точности, поскольку здесь я имею дело с целыми числами.
b
, не зная индексов[5, 7, 1, 3, 2, 4, 6]
в первую очередь. - person Andreas K.   schedule 29.10.2018