Сгенерировать матрицу, которая при умножении на вектор дает его отклонение от среднего значения

Задача заключается в том, чтобы создать матрицу А, которая при умножении на вектор дает результат его отклонения от среднего значения, Ax = x - mean. При этом, матрица А не должна зависеть от значений входящего вектора х, а только от его длины (т.е. для создания матрицы должно быть достаточно только знания сколько в х элементов).

Есть мнение, что можно преобразовать и упростить следующее выражение:

(A-I)x = -x@i/len(x)


Ответы (1 шт):

Автор решения: Pythonista0801

Задача заключалась в том, чтобы упростить матричное уравнение. В целом, решение может быть рассмотрено следующим образом:

A * X = X - Mean # исходное уравнение

X - Mean = X - i * Mean(X) # отнимаем среднее значение от каждого элемента вектора Х

A * X = X - i * i.T * X/len(X) # находим среднее значение

A * X = (I - (1/len(X)) * i * i.T) * X # выносим Х за скобки и получаем матрицу А

    def gen_m(n):
        J = np.ones(shape=(n,n))
        I = np.eye(n)
        return I - J/n
→ Ссылка