标签: sparse-matrix

如何在不使用lapply的情况下将列表列表转换为R中的稀疏矩阵?

我有一个由bigsplit()操作产生的列表列表(来自biganalytics包,bigmemory包的一部分).

每个列表表示矩阵中的列,并且每个列表项是二进制矩阵中值1的索引.

将此列表转换为稀疏二进制(0/1)矩阵的最佳方法是什么?在lapply()中使用lapply()是唯一的解决方案吗?如何将列表命名为列的名称?

r sparse-matrix

2
推荐指数
1
解决办法
2634
查看次数

python(scipy):调整稀疏矩阵的大小

我在调整矩阵大小时遇到​​了麻烦 - set_shape函数似乎没有效果:

>>> M
<14x3562 sparse matrix of type '<type 'numpy.float32'>'
   with 6136 stored elements in LInked List format>
>>> new_shape = (15,3562)
>>> M.set_shape(new_shape)
>>> M
<14x3562 sparse matrix of type '<type 'numpy.float32'>'
   with 6136 stored elements in LInked List format>
Run Code Online (Sandbox Code Playgroud)

有人遇到过这个吗?

我也尝试过这样做,即

>>> M._shape = new_shape
>>> M.data = np.concatenate(M.data, np.empty((0,0), dtype=np.float32))
Run Code Online (Sandbox Code Playgroud)

但是这引发了一个错误:

*** TypeError: only length-1 arrays can be converted to Python scalars
Run Code Online (Sandbox Code Playgroud)

要么

>>> M.data = np.concatenate(M.data, [])
*** TypeError: an integer is required …
Run Code Online (Sandbox Code Playgroud)

python scipy sparse-matrix

2
推荐指数
1
解决办法
2829
查看次数

如何在C++中为稀疏矩阵优化Gauss-Seidel例程?

我用C++编写了一个例程,用Gauss-Seidel方法求解方程组Ax = b.但是,我想将此代码用于稀疏的特定"A"矩阵(大多数元素为零).这样,此解算器所采用的大部分时间都是繁忙地将一些元素乘以零.

例如,对于以下方程组:

| 4 -1  0  0  0 | | x1 |   | b1 |
|-1  4 -1  0  0 | | x2 |   | b2 |
| 0 -1  4 -1  0 | | x3 | = | b3 |
| 0  0 -1  4 -1 | | x4 |   | b4 |
| 0  0  0 -1  4 | | x5 |   | b5 |
Run Code Online (Sandbox Code Playgroud)

使用Gauss-Seidel方法,我们将为x1提供以下迭代公式:

x1 = [b1 - ( - 1*x2 + 0*x3 + …

c++ sparse-matrix numerical-methods

2
推荐指数
1
解决办法
2866
查看次数

检查scipy稀疏矩阵是否为CSC或CSR

我想知道检查scipy稀疏矩阵的最佳方法,如果是CSC或CSR.现在我正在使用.

rows, cols = X.shape()
indptr = X.indptr()
if len(indptr) == cols + 1:
    print "csc"
else:
    print "csr"
Run Code Online (Sandbox Code Playgroud)

谢谢.

python scipy sparse-matrix

2
推荐指数
1
解决办法
928
查看次数

保留大型矩阵产品的特定元素

我需要计算以下矩阵表达式:XT - Y并保持元素仅对应于矩阵的非零元素Y.例如,如果:

In [63]: X.dot(T.T) - Y
Out[63]: array([[ -6,  -2], [ -9, -12]])
In [64]: Y
Out[64]: array([[5, 0], [7, 8]])
Run Code Online (Sandbox Code Playgroud)

然后结果应该是[[-6, 0], [-9, -12]].

X并且T都是矢量.问题是,无论X.dot(T.T)Y具有大尺寸(比方说350 x 23 000 000),所以Y被存储为一个scipy.sparse.csc_matrix有大约2亿的值.我没有足够的内存来存储中间XT结果.

当然,可以迭代所有非零元素Y并手动计算每个元素,XT然后手动构造结果csc_matrix.结果将具有相同indicesindptr属性的Y,这让我觉得,应该有一个更短或更快的方式.

numpy scipy sparse-matrix

2
推荐指数
1
解决办法
29
查看次数

访问稀疏矩阵中的元素是否有开销

假设我有一个稀疏矩阵A.我想对它做大量计算.计算不修改A,只访问其元素,例如取一行A然后乘以某些东西.我想知道在进行任何计算之前是否应该将A转换为完整矩阵,还是直接进行?
换句话说,访问稀疏矩阵中的元素比完整矩阵更慢?

matlab matrix overhead sparse-matrix

2
推荐指数
1
解决办法
1069
查看次数

特征稀疏矩阵得到非零元素指数

我是第一次使用Eigen Sparse Matrices,现在我想知道如何获得非零元素的索引.我构建了我的稀疏矩阵如下:

Eigen::SparseMatrix<Eigen::ColMajor> Am(3,3);
Run Code Online (Sandbox Code Playgroud)

我可以通过查看m_indices变量来查看VS中的一些索引.但我无法访问它们.谁能帮帮我吗?像矩阵一样

( 1 0 1 
  0 1 1
  0 0 0 )
Run Code Online (Sandbox Code Playgroud)

我希望指数是这样的(0,0), (0,2), (1,1), (1,2).

有什么办法吗?

PS我的矩阵大于3x3.

sparse-matrix eigen

2
推荐指数
1
解决办法
3224
查看次数

BLAS中是否包含稀疏BLAS?

我有一个有效的LAPACK实现,据我所知,它包含BLAS.

我想使用稀疏BLAS而据我了解这个网站,稀疏BLAS是BLAS的一部分.

但是当我尝试使用稀疏blas手册运行下面的代码时

g ++ -o sparse.x sparse_blas_example.c -L/usr/local/lib -lblas && ./sparse_ex.x

编译器(或链接器?)要求blas_sparse.h.当我把那个文件放在工作目录中时,我得到了:

ludi@ludi-M17xR4:~/Desktop/tests$ g++  -o sparse.x sparse_blas_example.c -L/usr/local/lib -lblas && ./sparse_ex.x
In file included from sparse_blas_example.c:3:0:
blas_sparse.h:4:23: fatal error: blas_enum.h: No such file or directory
 #include "blas_enum.h"
Run Code Online (Sandbox Code Playgroud)

使用SPARSE BLAS和LAPACK我该怎么办?我可以开始将很多头文件移动到工作目录中,但我收集了我已经将它们与lapack一起使用了!

/* C example: sparse matrix/vector multiplication */

#include "blas_sparse.h"
int main()
{
const int n = 4;
const int nz = 6;
double val[] = { 1.1, 2.2, 2.4, 3.3, 4.1, 4.4 };
int indx[] = { …
Run Code Online (Sandbox Code Playgroud)

c++ blas sparse-matrix lapack

2
推荐指数
1
解决办法
2117
查看次数

numpy/scipy相当于MATLAB的稀疏函数

我正在使用numpy和scipy在Python中移植MATLAB代码,我需要在MATLAB中使用numpy/scipy等效的稀疏函数.

这是MATLAB中稀疏函数的用法,

sparse([3; 2], [2; 4], [3; 0])
Run Code Online (Sandbox Code Playgroud)

得到:

Trial>> m = sparse([3; 2], [2; 4], [3; 0])

    m =

       (3,2)        3

    Trial>> full(m)

    ans =

         0     0     0     0
         0     0     0     0
         0     3     0     0
Run Code Online (Sandbox Code Playgroud)

我有这些,但他们没有给出MATLAB版本的功能,

sps.csr_matrix([3, 2], [2, 4], [3, 0])
sps.csr_matrix(np.array([[3], [2]]), np.array([[2], [4]]), np.array([[3], [0]])) 
sps.csr_matrix([[3], [2]], [[2], [4]], [[3], [0]])  
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢.

python matlab numpy sparse-matrix

2
推荐指数
1
解决办法
3474
查看次数

将标量添加到Eigen :: SparseMatrix的每个非零条目

我有一个巨大的Eigen::SparseMatrix,我想在矩阵中的非零条目中添加一个标量.

也就是说,如果我有一个矩阵A,其值_表示0稀疏矩阵中的一个条目,即它从未插入.

    1 _ 2
A = _ 3 _
    4 5 6
Run Code Online (Sandbox Code Playgroud)

我想做点什么,A += 1然后到达

    2 _ 3
A = _ 4 _
    5 6 7
Run Code Online (Sandbox Code Playgroud)

零条目不受影响的地方.

有没有有效的方法来做到这一点?

c++ sparse-matrix eigen

2
推荐指数
1
解决办法
296
查看次数

标签 统计

sparse-matrix ×10

c++ ×3

python ×3

scipy ×3

eigen ×2

matlab ×2

numpy ×2

blas ×1

lapack ×1

matrix ×1

numerical-methods ×1

overhead ×1

r ×1