Terminación de la matriz en Python

Digamos que tengo una matriz:

> import numpy as nap
> a = np.random.random((5,5))

array([[ 0.28164485,  0.76200749,  0.59324211,  0.15201506,  0.74084168],
       [ 0.83572213,  0.63735993,  0.28039542,  0.19191284,  0.48419414],
       [ 0.99967476,  0.8029097 ,  0.53140614,  0.24026153,  0.94805153],
       [ 0.92478   ,  0.43488547,  0.76320656,  0.39969956,  0.46490674],
       [ 0.83315135,  0.94781119,  0.80455425,  0.46291229,  0.70498372]])

Y que me pinche unos agujeros en ella.np.NaN, p.ej.:

> a[(1,4,0,3),(2,4,2,0)] = np.NaN; 

array([[ 0.80327707,  0.87722234,         nan,  0.94463778,  0.78089194],
       [ 0.90584284,  0.18348667,         nan,  0.82401826,  0.42947815],
       [ 0.05913957,  0.15512961,  0.08328608,  0.97636309,  0.84573433],
       [        nan,  0.30120861,  0.46829231,  0.52358888,  0.89510461],
       [ 0.19877877,  0.99423591,  0.17236892,  0.88059185,        nan ]])

Me gustaría rellenar elnan Entradas utilizando información del resto de entradas de la matriz. Un ejemplo sería usar elpromedio valor de la columna donde elnan se producen entradas.

En general, ¿hay bibliotecas en Python parafinalización de la matriz ? (por ejemplo, algo en la línea deMétodo de optimización convexo de Candes & Recht).

Fondo:

Este problema aparece a menudo en el aprendizaje automático. Por ejemplo, cuando se trabaja concaracterísticas que faltan en clasificación / regresión o enfiltración colaborativa (por ejemplo, ver el problema de Netflix enWikipedia yaquí)

Respuestas a la pregunta(5)

Su respuesta a la pregunta