Я вычисляю ковариацию двумя способами, которые, по моему мнению, следует связать, но они этого не делают.
Метод 1: Вычислить ковариационную матрицу среза массива данных
Метод 2: Вычислить ковариационную матрицу полного массива данных и сослаться на эквивалентный фрагмент этой матрицы.
Различия крошечные (порядок 1e-18), но эти различия растут с последующими вычислениями в моем коде и предотвращением воспроизводимости. Это проблема с плавающей запятой? Если так, то я все еще хотел бы понять, почему это происходит и как этого избежать.
Я на NumPy 1.16.3
Спасибо!
import numpy as np
state = np.random.RandomState(1)
X = state.rand(40,100)
A = np.cov(X[:20])
B = np.cov(X)[:20,:20]
print(np.array_equal(A, B))
diff = A - B
print(np.max(diff))
Я бы ожидал истинный результат от array_equal, но я получаю False