Interpolar matrizes inteiras de números complexos

Eu tenho um número de np.arrays bidimensionais (todos de tamanho igual) contendo números complexos. Cada um deles pertence a uma posição em um espaço 4-dimensional. Essas posições são esparsas e distribuídas irregularmente (um hipercubo latino para ser mais preciso). Eu gostaria de interpolar esses dados para outros pontos no mesmo espaço 4-dimensional.

Posso fazer isso com sucesso em números simples, usandosklearn.kriging(), scipy.interpolate.Rbf() (ou outros):

# arrayof co-ordinates: 2 4D sets
X = np.array([[1.0, 0.0, 0.0, 0.0],\
              [0.0, 1.0, 0.0, 0.0]])

# two numbers, one for each of the points above 
Y = np.array([1,\
              0])

# define the type of gaussian process I want
kriging = gp.GaussianProcess(theta0=1e-2, thetaL=1e-4, thetaU=4.0,\
            corr='linear', normalize=True, nugget=0.00001, optimizer='fmin_cobyla')

# train the model on the data
kmodel = kriging.fit(X,Y)

# interpolate
kmodel.predict(np.array([0.5, 0.5, 0.0, 0.0]))
# returns: array([ 0.5])

Se eu tentar usar matrizes (ou apenas números complexos) como dados, isso não funcionará:

# two arrays of complex numbers, instead of the numbers 
Y = np.array([[1+1j, -1-1j],\
              [0+0j,  0+0j]])

kmodel = kriging.fit(X,Y)
# returns: ValueError: The number of features in X (X.shape[1] = 1) should match the sample size used for fit() which is 4.

Isso é óbvio, pois a doutrina parakriging.fit() afirma claramente que precisa de uma matriz de n escalares, um por cada elemento na primeira dimensão de X.

Uma solução é decompor as matrizes em Y em números individuais, aqueles em partes reais e imaginárias, fazer uma interpolação separada de cada um deles e depois reuni-los novamente. Posso fazer isso com a combinação certa de loops e alguma arte, mas seria bom se houvesse um método (por exemplo, emscipy.interpolate) que poderia manipular um np.array inteiro em vez de valores escalares.

Ainda não estou fixo em um algoritmo específico, portanto, ficaria feliz em saber sobre qualquer um que possa usar matrizes de números complexos como a "variável" a ser interpolada. Como - como eu disse - existem poucos pontos irregulares no espaço (e nenhuma grade para interpolar), a interpolação linear simples não funciona, é claro.

questionAnswers(2)

yourAnswerToTheQuestion