Кроме замены == на = есть ещё кое что:
for elem in row:
row - это, наверное, список чисел?
Тогда переменная (или ссылка) elem ссылается не на конкретную позицию в списке, а просто на объект-число.
То есть это "ЭЛЕМ это число Х", но не "ЭЛЕМ это энное число из списка".
Когда вы напишете
elem = 1
вы не замените число в списке. Вы просто скажете, что ссылка elem теперь ссылается на объект-число 1.
Вам вместо "ЭЛЕМ теперь будет числом Y" нужно "Энное число из списка теперь равно Y".
Чтобы заменить элемент в списке надо писать
row[index] = 1
Перепишем код:
def translate_mat(mat, mean):
for row in mat:
for i in range(len(row)):
if row[i] < mean:
row[i] = 0
else:
row[i] = 1
return mat
Ещё вариант:
def translate_mat(mat, mean):
for row in mat:
for i, elem in enumerate(row):
row[i] = 0 if elem < mean else 1
return mat