Форматирование моего комментария к выбранному ответу (ответ @ Naveed) имеет скремблирование - поэтому добавление этого ответа. Все кредиты принадлежат Naveed.
Просто потрясающе. Мой случай был - у меня есть поле, которое представляет собой массив, поэтому мне пришлось добавить дополнительный цикл.
Мой запрос:
db.getCollection("profile").find({"photos": {$ne: "" }}).forEach(function(e,i) {
e.photos.forEach(function(url, j) {
url = url.replace("http://a.com", "https://dev.a.com");
e.photos[j] = url;
});
db.getCollection("profile").save(e);
eval(printjson(e));
})
Вы можете попробовать этот подход: https://github.com/Midnighter/nadist , в качестве альтернативы вы можете использовать _chk_weights
с nan_screen=True
, как описано здесь в метапертуре здесь https: / /github.com/scipy/scipy/issues/3870, надеюсь, это поможет.
Я обнаружил, что Midnighter ранее опубликовал ту же проблему в стеке потока: Рассчитать попарно расстояние в scipy с отсутствующими значениями . Там есть некоторые другие решения, но, поскольку он перешел к его цитонизации, держу пари, что они были не лучшими.
Вы можете поменять NaN
на 0
и попробовать вычислить косинусное подобие.
Я решил проблему, создав маску (логический массив, указывающий, какие значения отсутствуют) и вычислив попарно косинусные расстояния между векторами строк матрицы. В результате я получил длинный вектор сходств, который я затем развернул, чтобы получить матрицу сходства