Выполните следующую задачу:
Нормализуйте матрицу по столбцам. Из каждого значения в столбце вычтите среднее (в столбце) и разделите его на стандартное отклонение (в столбце). Ваш вывод не должен содержать nan (вызвано делением на ноль). Замените Nans на 1. Не используйте if и while / for.
Я работаю с numpy, поэтому я написал следующий код:
def normalize(matrix: np.array) -> np.array:
res = (matrix - np.mean(matrix, axis = 0)) / np.std(matrix, axis = 0, dtype=np.float64)
return res
matrix = np.array([[1, 4, 4200], [0, 10, 5000], [1, 2, 1000]])
assert np.allclose(
normalize(matrix),
np.array([[ 0.7071, -0.39223, 0.46291],
[-1.4142, 1.37281, 0.92582],
[ 0.7071, -0.98058, -1.38873]])
)
Ответ Правильно.
Однако мой вопрос: как мне избежать деления на ноль? Если у меня есть столбец с аналогичными числами, у меня будет стандартное отклонение = 0 и значение Nan в результате. Как мне это решить? Буду благодарен!