我的问题的主要部分已经回答here。
然而,我的问题在于我有大量的数据 - 两个265k(265 000)条目的向量。我尝试将这些数组转换为稀疏的scipy矩阵,但减法不会那样,因为scipy不能使用numpy的广播。
array_one = sparse.csr_matrix(df.id.values)
array_two = sparse.csr_matrix(df.id.values[:, None])
array_one - array_two throws MemoryError
目前,我正在循环一个265k 2 条目,虽然它正在发挥作用,但我想要为未来提出更有效的解决方案。
我这样做:
for j in range(265180):
for i in range(265180):
if arr1.data[j] == arr2.data[i]:
rows.append(j)
cols.append(i)
data_items.append(1)
mat = sparse.coo_matrix(rows, cols, data_items)
当N足够大时,有没有办法将Nx1 - 1xN numpy计算矩阵转换为NxN稀疏矩阵,以便计算出的矩阵不适合内存?