Это по своей природе плохо обусловлено численно, но вы могли бы сделать что-то вроде этого:
import numpy as np
x = np.random.randn(500)
y = np.random.randn(500)
z = np.random.randn(500) # Dependent variable
v = np.array([np.ones(500), x, y, x**2, x * y, y**2])
coefficients, residues, rank, singval = np.linalg.lstsq(v.T, z)
Чем больше терминов вы добавите, тем хуже станет численно.Вы уверены, что хотите полиномиальный интерполант?
Существуют и другие основания для полиномов, для которых матрица значений не так плохо обусловлена, но я не могу вспомнить, как они называются;любой учебник по численному анализу на уровне колледжа имел бы этот материал.