Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NumPy:将稀疏矩阵从R导入Python_Numpy_Matrix_Scipy_Sparse Matrix - Fatal编程技术网

NumPy:将稀疏矩阵从R导入Python

NumPy:将稀疏矩阵从R导入Python,numpy,matrix,scipy,sparse-matrix,Numpy,Matrix,Scipy,Sparse Matrix,我在R中有一个非常大和稀疏的矩阵,是用“矩阵”包创建的,我想用python+numpy处理它。R对象是csc格式的,如果我使用Matrix包中的函数writeMM导出它,输出结果如下所示: %%MatrixMarket matrix coordinate real general 4589 17366 160441 22 1 5.954510725783322 36 1 29.77255362891661 41 1 23.81804290313329 74 1 5.954510725783322

我在R中有一个非常大和稀疏的矩阵,是用“矩阵”包创建的,我想用python+numpy处理它。R对象是csc格式的,如果我使用Matrix包中的函数writeMM导出它,输出结果如下所示:

%%MatrixMarket matrix coordinate real general
4589 17366 160441
22 1 5.954510725783322
36 1 29.77255362891661
41 1 23.81804290313329
74 1 5.954510725783322
116 1 59.54510725783322
127 1 11.909021451566645
159 1 17.863532177349967
其中第一列是行,第二列是列,第三列是值

我想知道如何将其导入python。我看到scipy有一个模块可以处理列压缩的稀疏矩阵,但它没有从文件中创建一个矩阵的功能。

您可以使用它来实现您想要的功能

In [11]: mmread("sparse_from_file")
Out[11]: 
<4589x17366 sparse matrix of type '<class 'numpy.float64'>'
    with 7 stored elements in COOrdinate format>
[11]中的
:mmread(“稀疏的\u文件”)
出[11]:
注意,结果是一个COO稀疏矩阵。 如果需要
csc\u矩阵
,则可以使用
sparse.coo\u matrix.tocsc

现在,您提到要使用numpy处理这个非常大且稀疏的矩阵。这可能是不切实际的,因为numpy只在密集阵列上运行,如果您的矩阵确实非常大且稀疏,您可能无法以密集格式存储它

因此,对于您的用例,您最好坚持使用最有效的
scipy.sparse
格式。

您可以使用它来实现您想要的功能

In [11]: mmread("sparse_from_file")
Out[11]: 
<4589x17366 sparse matrix of type '<class 'numpy.float64'>'
    with 7 stored elements in COOrdinate format>
[11]中的
:mmread(“稀疏的\u文件”)
出[11]:
注意,结果是一个COO稀疏矩阵。 如果需要
csc\u矩阵
,则可以使用
sparse.coo\u matrix.tocsc

现在,您提到要使用numpy处理这个非常大且稀疏的矩阵。这可能是不切实际的,因为numpy只在密集阵列上运行,如果您的矩阵确实非常大且稀疏,您可能无法以密集格式存储它


因此,对于您的用例,您最好坚持使用最有效的
scipy.sparse
格式。

是的,您的numpy速度是正确的-它甚至比使用R进行计算还要慢。但是,pyspark的SparseVector照明速度很快,完成了与numpy在1小时内完成一天工作相同的工作。很高兴看到你找到了替代品。scipy.sparse可能已经完成了这项工作,通常这取决于为手头的计算选择正确的格式(它们在简单运算/线性代数等方面的性能非常不平等)。是的,你对numpy的速度是正确的-它甚至比用R进行计算还要慢。但是,pyspark的SparseVector照明速度很快,完成了与numpy在1小时内完成一天工作相同的工作。很高兴看到你找到了替代品。scipy.sparse可能已经完成了这项工作,通常这取决于为手头的计算选择正确的格式(它们在简单运算/线性代数等方面的性能非常不同)。