Я предполагаю, что вы можете каким-то образом считывать строки значений данных в отдельные списки в памяти, то есть, как вы делали это в своем примере (имея списки для Id
и ItemId
).Согласно комментариям к вашему посту, мы также не ожидаем дубликатов.Обратите внимание, что следующие не будут работать , если у вас есть дубликаты!
Представленное решение также вводит (разреженную) матрицу, которая не так плотна, как показано в примере, как мы будем напрямуюиспользуйте значения Id в качестве записей матрицы / строки.
Чтобы передать их конструктору, если вы просматриваете документацию SciPy :
csr_matrix((data, (row_ind, col_ind)), [shape=(M, N)])
, где data
, row_ind
и col_ind
удовлетворяют соотношению a[row_ind[k], col_ind[k]] = data[k]
.
То есть мы можем напрямую передавать списки как индексы в нашу разреженную матрицуследующим образом:
from scipy.sparse import csr_matrix
Id_values = load_values() # gets the list of entries as in the post example
ItemId_values = load_more_values()
sparse_mat = csr_matrix(([1]*len(Id_values), # entries will be filled with ones
(Id_values, ItemId_values)), # at those positions
shape=(max(Id_values)+1, max(ItemId_values)+1)) # shape is the respective maximum entry of each dimension
Обратите внимание, что это не даст вам никакой сортировки, но вместо этого поместите значения в их соответствующие позиции Id, т.е. первая пара будет удерживаться в позиции (2134, 134) вместо (0, 0)