Python Pyspark中压缩稀疏行方法中的矩阵向量乘法

Python Pyspark中压缩稀疏行方法中的矩阵向量乘法,python,apache-spark,pyspark,sparse-matrix,Python,Apache Spark,Pyspark,Sparse Matrix,有谁能帮助我在Pyspark和Python中如何在压缩稀疏行(CSR)方法中实现矩阵向量乘法 y=A*X 其中,A以CSR格式表示为三个矩阵Val、RowPtr和Col。另外,X是一个向量 矩阵A是一个稀疏矩阵,使用三个数组存储在CSR中: Val[N]:包含非零元素的值 RowPtr[N]:包含非零元素的行索引范围 (RowPtr中的最后一个元素是Val数组的大小) Col[N]:包含非零元素的列索引 您可以参考并了解更多有关CSR矩阵表示的信息 算法如下: 将矩阵(使用压缩稀疏行方法存储)与

有谁能帮助我在Pyspark和Python中如何在压缩稀疏行(CSR)方法中实现矩阵向量乘法

y=A*X

其中,
A
以CSR格式表示为三个矩阵
Val
RowPtr
Col
。另外,
X
是一个向量

矩阵
A
是一个稀疏矩阵,使用三个数组存储在CSR中:

Val[N]
:包含非零元素的值

RowPtr[N]
:包含非零元素的行索引范围 (RowPtr中的最后一个元素是Val数组的大小)

Col[N]
:包含非零元素的列索引

您可以参考并了解更多有关CSR矩阵表示的信息

算法如下:

将矩阵(使用压缩稀疏行方法存储)与向量相乘
d[N]

for (k = 0; k < N; k = k + 1)
    result[i] = 0;

for (i = 0; i < N; i = i + 1)
{  
    for (k = RowPtr[i]; k < RowPtr[i+1]; k = k + 1)
    {  
        result[i] = result[i] + Val[k]*d[Col[k]];
    }  
}


n = len(dense_matrix)

# res = dense X csr
csr_row = 0 # Current row in CSR matrix
for i in range(n):
start, end = row_ptr[i], row_ptr[i + 1]
for j in range(start, end):
    col, csr_value = col_idx[j], csr_values[j]
    for k in range(n):
    dense_value = dense_matrix[k][csr_row]
    res[k][col] += csr_value * dense_value
csr_row += 1

print res
(k=0;k 结果[i]=0; 对于(i=0;i您需要帮助的要点是什么?你还没有算法吗?问题在哪里?另外,您需要自己实现还是可以使用一些预先实现的解决方案呢?scipy.sparse`使用python和cython@hpaulj我已经编辑了这个问题。有了python实现,但我需要为pyspark实现做准备。再说一次,你在绞尽脑汁搞什么特别的部分?到目前为止,您尝试了什么?如何在pyspark中将上述算法实现为map reduce表单。