Разбиение матрицы на несколько блоковPython

Программы на Python
Anonymous
Разбиение матрицы на несколько блоков

Сообщение Anonymous »

У меня есть подобная матрица:

Код: Выделить всё

A= [[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]]
и я хочу извлечь подматрицы, содержащие равные строки. Я априори не знаю, сколько блоков я получу и положение одинаковых строк, поскольку это пример гораздо большей матрицы.
Результат, который я должен получить, находится в форма

Код: Выделить всё

B=[[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]]

C= [[0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]]
Я пробовал

Код: Выделить всё

for i in range(len(A)):
for j in range(i + 1, len(A)):
if np.array_equal(A[i], A[j]):
cluster = np.vstack((A[i], A[j]))
print(cluster)
но, конечно, я получаю только отдельные пары одинаковых строк, а не один блок.

Подробнее здесь: https://stackoverflow.com/questions/784 ... ple-blocks

Вернуться в «Python»