У меня есть массив 2D Numpy, в котором я хочу нормализовать каждый столбец до нулевого среднего и единичной дисперсии. Поскольку я в основном используется для C++, метод, которым я занимаюсь, состоит в том, чтобы использовать циклы для итерации по элементам в столбце и выполнять необходимые операции, а затем повторять это для всех столбцов. Я хотел знать о питоническом способе сделать это.Normalize 2D Numpy Array: Zero Mean Unit Variance
Позвольте class_input_data
быть моим 2D-массивом. Я могу получить столбец означает, как:
column_mean = numpy.sum(class_input_data, axis = 0)/class_input_data.shape[0]
я затем вычесть среднее из всех колонок:
class_input_data = class_input_data - column_mean
В настоящем время, данные должна быть нулевым среднее. Тем не менее, значение:
numpy.sum(class_input_data, axis = 0)
не равен 0, то это означает, что я сделал что-то неправильно в моей нормализации. By не равно 0, я не имею в виду очень маленькие числа, которые можно отнести к неточностям с плавающей запятой.
Вычтите среднее из каждого столбца и разделите дисперсии. – Evert
Почему бы просто не использовать numpy.mean? – nitbix
@nitbix: Спасибо за ваш комментарий, но я понятия не имею, почему я не использовал его в то время. Возможно, были какие-то проблемы или что-то еще. Однако, это всего лишь несколько месяцев, я не помню других деталей. Из любопытства, как вы наткнулись на этот вопрос сейчас? – therainmaker