标签: sparse-matrix

极稀疏数组的实现

我有一个非常稀疏的静态数组,每个维度为8192,我想从(C#)进行查找.这些4.5*10 ^ 15值中只有68796个非零.什么是最快的方法,速度和低内存使用是至关重要的?

谢谢

c# arrays sparse-matrix

6
推荐指数
1
解决办法
2059
查看次数

给出A和B的Trace(AB ^ { - 1})的有效计算

我有两个平方矩阵A和B.A是对称的,B是对称的正定.我想计算$ trace(AB ^ { - 1})$.现在,我计算B的Cholesky分解,求解方程$ A = CB $中的C并总结对角元素.

有更有效的方法吗?

我计划使用Eigen.如果矩阵稀疏(A通常是对角线,B通常是带对角线),你能提供一个实现吗?

math matrix sparse-matrix eigen

6
推荐指数
1
解决办法
601
查看次数

聚类二进制向量的稀疏数据集

如果我有一个稀疏数据集,其中每个数据由1000个元素的向量描述,这个向量的每个元素可以是0或1(很多0和1),你知道任何可以帮助我的距离函数吗?聚集他们?在这种情况下,欧几里德的距离是否方便?我想知道这种情况是否有一个简单方便的距离指标,试试我的数据.

谢谢

cluster-analysis distance sparse-matrix

6
推荐指数
2
解决办法
6144
查看次数

使用EF Code First Fluent API时如何将数据库列设置为"稀疏"?

我正在使用一个首先使用EF代码的系统,我想在表上使用许多SQL Server稀疏列.我目前的解决方案是删除EF创建的表,并在数据库初始化期间通过脚本重新添加.这是可以在从EntityTypeConfiguration或其他方式继承的类中使用Fluent API配置的吗?

entity-framework sparse-matrix code-first dbcontext

6
推荐指数
1
解决办法
1186
查看次数

用scipy.sparse计数

我正在使用Python sklearn库.我有150,000多个句子.

我需要一个类似数组的对象,其中每一行用于句子,每列对应一个单词,每个元素是该句子中的单词数.

例如:如果两个句子是"狗跑"和"男孩跑",我需要

[ [1, 1, 1, 0]
, [0, 1, 1, 1] ]
Run Code Online (Sandbox Code Playgroud)

(列的顺序无关紧要,取决于哪个列分配给哪个单词)

我的数组将是稀疏的(每个句子将有一小部分可能的单词),所以我使用scipy.sparse.

def word_counts(texts, word_map):
    w_counts = sp.???_matrix((len(texts),len(word_map)))

    for n in range(0,len(texts)-1):
        for word in re.findall(r"[\w']+", texts[n]):
            index = word_map.get(word)
            if index != None:
                w_counts[n,index] += 1
    return w_counts

...
nb = MultinomialNB() #from sklearn
words = features.word_list(texts)
nb.fit(features.word_counts(texts,words), classes)
Run Code Online (Sandbox Code Playgroud)

我想知道什么稀疏矩阵是最好的.

我尝试使用coo_matrix但出现错误:

TypeError:'coo_matrix'对象没有属性'__getitem__'

我查看了COO 的文档,但对以下内容感到非常困惑:

稀疏矩阵可用于算术运算......
COO格式的缺点......不直接支持:算术运算

我使用了dok_matrix,这很有用,但我不知道在这种情况下这是否表现最佳.

提前致谢.

python nlp scipy sparse-matrix scikit-learn

6
推荐指数
1
解决办法
1901
查看次数

解决稀疏的上三角系统

我试图弄清楚如何有效地解决稀疏的三角形系统,在scipy稀疏中Au*x = b.

例如,我们可以构造一个稀疏的上三角矩阵,Au和一个右手边b,其中:

import scipy.sparse as sp
import scipy.sparse.linalg as sla
import numpy as np

n = 2000
A = sp.rand(n, n, density=0.4) + sp.eye(n)
Au = sp.triu(A).tocsr()
b = np.random.normal(size=(n))
Run Code Online (Sandbox Code Playgroud)

我们可以使用spsolve来解决问题,但很明显三角形结构没有被利用.这可以通过对解决方案进行计时并将其与splu中的求解方法进行比较来证明.(这里使用iPython的%时间魔法)

%time x1 = sla.spsolve(Au,b)
CPU times: user 3.63 s, sys: 79.1 ms, total: 3.71 s
Wall time: 1.1 s

%time Au_lu = sla.splu(Au)
CPU times: user 3.61 s, sys: 62.2 ms, total: 3.67 s
Wall time: 1.08 s

%time x2 = Au_lu.solve(b)
CPU times: user 25 ms, …
Run Code Online (Sandbox Code Playgroud)

python linear-algebra scipy sparse-matrix

6
推荐指数
1
解决办法
937
查看次数

如何计算特征库中稀疏矩阵的逆

我对C++中的Eigen库有疑问.实际上,我想计算稀疏矩阵的逆矩阵.当我在Eigen中使用Dense矩阵时,我可以使用.inverse()运算来计算密集矩阵的逆.但是在稀疏矩阵中,我无法在任何地方找到逆运算.有谁知道计算稀疏矩阵的逆?帮我.

c++ matrix sparse-matrix eigen eigen3

6
推荐指数
1
解决办法
7730
查看次数

将Eigen矩阵转换为Triplet形式的C++

我认为Eigen使用压缩方法来存储稀疏矩阵.有没有什么方法可以从std :: vectors中提取特征稀疏矩阵的Triplet格式向量?

谢谢.

更多信息(三元组格式的示例)矩阵的三元组格式:

A=
3 0 4 0
0 0 1 0
0 2 0 5
4 0 0 0

i = 1 1 2 3 3 4  // row
j = 1 3 3 2 4 1 // column
S = 3 4 1 2 5 4  // values
Run Code Online (Sandbox Code Playgroud)

c++ matrix sparse-matrix eigen triplet

6
推荐指数
2
解决办法
2766
查看次数

对于各种b,稀疏带状Ax = b的批量CUDA解决方案

我有一个稀疏的带状矩阵A,我想(直接)解决Ax = b.我有大约500个向量b,所以我想解决相应的500 x.我是CUDA的新手,所以我对我有哪些选择感到困惑.

cuSOLVER有一个批量直接求解器cuSolverSP,用于在这里使用QR的稀疏A_i x_i = b_i .(由于A的条件很好,我对LU也没问题.)但是,据我所知,我无法利用我所有的A_i都是一样的事实.

另一种选择是首先确定CPU或GPU上的稀疏LU(QR)因子分解,然后并行执行GPU上的后置替换(分别为backsub和matrix mult)吗?如果cusolverSp <t> csrlsvlu()用于一个b_i,是否有一种标准方法可以为多个b_i批量执行此操作?

最后,由于我对此没有直觉,考虑到必要的开销,我是否应该期望在这些选项中的GPU加速?x的长度约为10000-100000.谢谢.

c++ cuda sparse-matrix matrix-factorization cusolver

6
推荐指数
1
解决办法
708
查看次数

SparseBooleanArray.equals()无法按预期工作

在下面的代码中我希望equals()返回true,但事实并非如此.我在这里错过了什么?

    SparseBooleanArray array_0 = new SparseBooleanArray();
    array_0.put(0, true);
    array_0.put(2, true);

    SparseBooleanArray array_1 = new SparseBooleanArray();
    array_1.put(0, true);
    array_1.put(2, true);

    boolean isEqual = array_0.equals(array_1); // is false instead of true
Run Code Online (Sandbox Code Playgroud)

在调试器中查看两个数组,它们对我来说似乎是一样的(它们有不同的shadow$_monitor_值,但我不知道应该是什么).该toString()方法也为两者返回相同的字符串.

我想写的一种转换功能单元测试EnumSetSparseBooleanArray,但我不能手动创建同一阵列将其与函数的返回值进行比较.


编辑

我还应该提一下hasCode(),根据文档,也不应该返回不同的值.

java android sparse-matrix

6
推荐指数
1
解决办法
344
查看次数