Почему не выполняется замена значений цикла?
== - это equal, то есть проверка на равно ли.
= - это присвоение. 
вы хотите присвоить новое значение,  используйте =
Кроме замены == на = есть ещё кое что: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