import numpy as np


def projectData(X, U, K):
    """
        Функция выполняет вычисление проекций нормализованных входов 
        матрицы объекты-признаки X. Количество проекций ограничивается 
        числом K. Эти K проекций формируются путем проецирования входов 
        на первые K собственных векторов матрицы U. Результат вычисления 
        проекций сохраняется в Z
    """

    m = X.shape[0]
    Z = np.zeros((m, K))

    # ====================== Ваш код здесь ======================
    # Инструкция: выполнить вычисление проекций данных, используя 
    # только K собственных векторов в U (первые K столбцов)
    U_reduce = U[:, 0:K]
    Z = X.dot(U_reduce)

    # ===========================================================

    return Z
