从现有数据创建大型稀疏矩阵

时间:2017-11-24 09:48:44

标签: python pandas scipy sparse-matrix numpy-broadcasting

我的问题的主要部分已经回答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稀疏矩阵,以便计算出的矩阵不适合内存?

0 个答案:

没有答案