Матрицы (работа с индексами)

Здравствуйте. Мне нужно проверить матрицу допустим на рефлексивность (матрицей называют рефлексивной, если на главной диагонали у неё все 1). Мне как-то нужно с индексами поработать, только не понимаю как, в интернете читал, но не получается.

import random
import numpy
 
A = set(random.sample(range(-10, 10), 5))
print('Множество A =',sorted(A))
r1 = lambda x, y: int(y % x == 0)
m1 = list(list(r1(x, y) for y in sorted(A)) for x in sorted(A))
print("Матрица a отношения R");
for a in m1:
    print(*a)
r2 = lambda x, y: int(y % x != 0)
m2 = list(list(r2(x, y) for y in sorted(A)) for x in sorted(A))
print("Матрица b дополнения R отношения R");
for b in m2:
    print(*b)
r3 = lambda x, y: int(y % x == 0)
m3 = list(list(r3(x, y) for y in sorted(A)) for x in sorted(A))
print("Матрица c обращения R^-1 отношения R");
for c in zip(*m3):
    print(*c)
r4 = lambda x, y: numpy.dot(a,b)
m4 = list(list(r4(x, y) for y in sorted(A)) for x in sorted(A))
print("Матрица d произведение отношений Rп=R*-R");
for d in m4:
    print(*d)
r5 = lambda x, y: int(y % x != 0)
m5 = list(list(r5(x, y) for y in sorted(A)) for x in sorted(A))
print("Матрица e двойственного отношения Rп^d");
for e in zip(*m5):
    print(*e)
r6 = lambda x, y: int(y % x == 0)
m6 = list(list(r6(x, y) for y in sorted(A)) for x in sorted(A))
print("Матрица f отношение R&Rп");
for i in m6:
    f = numpy.bitwise_and(a,d)
    print(*f)
print("")

А в чем проблема?
Должно работать примерно как и везде, matrix[i][j]

import numpy as np

matrix = np.array([[1, 4, 5, 12],
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]])

row_count, col_count = matrix.shape

for i in range(0, row_count):
    for j in range(0, col_count):
        print('value at [{}, {}]: {}'.format(i, j, matrix[i][j]))

Python Matrix and Introduction to NumPy

В том и проблема, у меня в программе, с моими матрица это не работает

А, тут просто питоновский список списков.

row_count = len(m1)
col_count = len(m1[0])

for i in range(0, row_count):
    for j in range(0, col_count):
        print('value at [{}, {}]: {}'.format(i, j, m1[i][j]))

Тут будет ошибка если x == 0

Да, это я знаю, условие добавить просто, что if x != 0 else int(0)

Можно так без if: int(x != 0 and y % x == 0)

Либо, так да

А как сделать, чтобы вывелась только одна строка?

Ага, понял как это работает, но чё-то он как-то странно с m5 работает, почему то иногда левые значение выводит)

Слушай, я понял как строку отдельную вывести, а как вывести отдельный элемент? Мне допустим это в условие нужно использовать

Ааааа всё понять, тупой я))) if m[1][1] == 1: и т.д). Спасибо огромной