我有一个非常稀疏的静态数组,每个维度为8192,我想从(C#)进行查找.这些4.5*10 ^ 15值中只有68796个非零.什么是最快的方法,速度和低内存使用是至关重要的?
谢谢
我有两个平方矩阵A和B.A是对称的,B是对称的正定.我想计算$ trace(AB ^ { - 1})$.现在,我计算B的Cholesky分解,求解方程$ A = CB $中的C并总结对角元素.
有更有效的方法吗?
我计划使用Eigen.如果矩阵稀疏(A通常是对角线,B通常是带对角线),你能提供一个实现吗?
如果我有一个稀疏数据集,其中每个数据由1000个元素的向量描述,这个向量的每个元素可以是0或1(很多0和1),你知道任何可以帮助我的距离函数吗?聚集他们?在这种情况下,欧几里德的距离是否方便?我想知道这种情况是否有一个简单方便的距离指标,试试我的数据.
谢谢
我正在使用一个首先使用EF代码的系统,我想在表上使用许多SQL Server稀疏列.我目前的解决方案是删除EF创建的表,并在数据库初始化期间通过脚本重新添加.这是可以在从EntityTypeConfiguration或其他方式继承的类中使用Fluent API配置的吗?
我正在使用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,这很有用,但我不知道在这种情况下这是否表现最佳.
提前致谢.
我试图弄清楚如何有效地解决稀疏的三角形系统,在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) 我对C++中的Eigen库有疑问.实际上,我想计算稀疏矩阵的逆矩阵.当我在Eigen中使用Dense矩阵时,我可以使用.inverse()运算来计算密集矩阵的逆.但是在稀疏矩阵中,我无法在任何地方找到逆运算.有谁知道计算稀疏矩阵的逆?帮我.
我认为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) 我有一个稀疏的带状矩阵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.谢谢.
在下面的代码中我希望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()方法也为两者返回相同的字符串.
我想写的一种转换功能单元测试EnumSet的SparseBooleanArray,但我不能手动创建同一阵列将其与函数的返回值进行比较.
编辑
我还应该提一下hasCode(),根据文档,也不应该返回不同的值.