У меня есть массив, подобный следующему, с каждой строкой, являющейся наблюдением, и каждым столбцом, являющимся объектом:
import scipy
my_sparse_array = scipy.sparse.random(2000, 10000000, density=0.01, format='csr')
Для каждой пары наблюдений (строк) я хочу вычислить сходство по Джакарту междуих - учитывая, что ненулевое значение в массиве означает, что функция присутствует, а нулевые значения указывают на отсутствие функции.Следовательно, пересечение будет в том случае, когда оба наблюдения имеют ненулевое значение для объекта, а объединение - в том случае, если только одно из наблюдений имеет ненулевое значение.Функции, в которых оба значения равны нулю, следует игнорировать.
Какой наиболее эффективный способ выполнения этого парного вычисления.Мой план состоял в том, чтобы сделать комбинации всех пар 0 - 1999, поднастроить две строки, удалить все столбцы с ненулевыми столбцами, а затем вычислить, но это кажется ужасно неэффективным, так как для этого требуется тонна соединений.
Желаемый результат - матрица 2000 x 2000 с индексом Жакара.Бонусом будет сделать промежуточный массив из 4 столбцов с индексом наблюдения 1, индексом наблюдения 2, пересечением и объединением.
Спасибо!Jack