Завершение матрицы в Python

Скажем, у меня есть матрица:

> 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]])

И что я пробиваю в нем несколько дырокnp.NaNНапример:

> 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 ]])

Я хотел бы заполнитьnan записи, использующие информацию из остальных записей матрицы. Примером будет использованиесредний значение столбца, гдеnan записи происходят.

В более общем смысле, есть ли в Python библиотеки длязавершение матрицы ? (например, что-то вродеМетод выпуклой оптимизации Candes & Recht).

Фон:

Эта проблема часто появляется в машинном обучении. Например, при работе снедостающие функции в классификации / регрессии или всовместная фильтрация (например, см. проблему Netflix наВикипедия а такжеВот)

Ответы на вопрос(5)

Ваш ответ на вопрос