问题标签 [sparse-matrix]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
7021 浏览

python - 创建对角稀疏矩阵的有效方法

我使用 Numpy 在 Python 中有以下代码:

如何转换它以获得与不先创建p2值相同的稀疏矩阵?pp

0 投票
3 回答
996 浏览

c++ - 提升压缩矩阵存储

boostublas::compressed_matrix应该只为非零元素分配空间。但在下面的例子中,我得到了奇怪的结果。

为什么只ublas::matix20字节4x4 matrix(而不是8*4*4=128字节)ublas::compressed_matrix2*2=4而非零元素取56字节(而不是4*8=32字节)?

我也很困惑如何在ublas::compressed_matrix. 如果我尝试存储超过构造函数中设置的非零元素的数量会发生什么?

请帮助澄清。

0 投票
3 回答
584 浏览

c++ - 在 boost 中由compressed_matrix 分配的空间

boostcompressed_matrix 分配了多少空间?它只为非零元素分配空间是真的吗?如果这是真的,我不明白为什么下面的代码会给出 bad_alloc 错误。

它应该只为 3*m=3*10000*10000 个元素分配空间,对吗?

你能帮忙澄清一下吗?我可以使用什么数据结构来只为非零元素分配空间。其次,如何为非零元素设置值?

非常感谢。

0 投票
2 回答
4088 浏览

c++ - 提升压缩矩阵基础

我对 boost::compressed_matrix 的工作原理感到困惑。假设我像这样声明压缩矩阵:

这为 1000x1000 矩阵中的 3*1000 个元素分配空间。现在我如何给它非零元素的位置?何时以及如何设置非零元素?是否每次我在矩阵中分配一个元素,例如 B(4,4)=4,它会将该元素标记为非零?

如果可能的话,如果您能帮助我通过示例学习这一点,我将不胜感激。对内部实现的一些见解会很棒。我想确保我不会通过猜测来编写次优的程序。

谢谢你!

0 投票
2 回答
600 浏览

matlab - 如何对大型稀疏矩阵进行排序,然后将结果导出到 matlab 中?

我必须处理一个大小为 6004*17842(doc*terms)的大型稀疏矩阵。函数 find() 已尝试获取其行、列和值,结果以 ascii 格式保存。但是这些术语在每个文档中都没有排序。谁能建议我一种对矩阵进行排序并导出排序结果的方法?

0 投票
2 回答
2686 浏览

c++ - 更高效的稀疏矩阵元素访问器

我用成员写了一个小的稀疏矩阵类:

下面的方法是我用来访问矩阵元素的函数,如果不可能通过迭代器:

仍然需要经常调用此函数。有人知道如何改进此功能吗?提前谢谢。

0 投票
1 回答
315 浏览

algorithm - 对相关特征的数据结构的建议

我们有一组 Documents ,每个都有一组 Features。给定特征 A,我们需要知道在同一文档中具有特征 B 的概率是多少。

我想建立一个概率矩阵 st: M(i,j) = Probability of having feature B in a document ,假设特征 A 存在。

但是,我们还有一个额外的要求:给定特征 A 在文档中,有哪些特征在同一文档中的概率 > P。

同时,我所能想到的只是概率矩阵的稀疏矩阵,在计算之后,对于每个特征在所有列上运行,按 P 对其进行排序,并将其保存在某个链接列表中。(所以现在,对于每个特征,我们都有一个对应特征的列表

这个空间复杂度相当大(最坏的情况:N^2,而且N很大!),每次搜索的时间复杂度是O(N)。

有更好的主意吗?

0 投票
1 回答
1831 浏览

haskell - Haskell中有任何稀疏线性代数包吗?

是否有任何软件包可以执行稀疏线性代数计算,可能基于快速高效的 C 库?我在 Hackage 上进行了搜索,但没有找到任何相关信息:使用 GSL、BLAS 和 LAPACK 的 hmatrix 很棒,但似乎不包括解决线性系统和稀疏矩阵的特征值/向量问题的特殊算法. 我想找到的,它类似于 scipy 中的 sparse.linalg 模块。谢谢!

0 投票
3 回答
635 浏览

perl - 如何使用 Perl 有效地填充 N x M 网格?

我有一个 Perl 脚本,它解析数据文件并写入 5 个填充有 1100 x 1300 网格的输出文件。该脚本有效,但在我看来,它很笨拙并且可能效率不高。该脚本也是继承的代码,我对其进行了一些修改以使其更具可读性。尽管如此,还是一团糟。

目前,脚本读取数据文件(~4Mb)并将其放入数组中。然后它遍历数组解析其内容并将值推送到另一个数组,最后将它们打印到另一个 for 循环中的文件。如果未找到某个点的值,则打印 9999。零是可接受的值。

数据文件有 5 个不同的参数,每个参数都写入自己的文件。

数据示例:

5559是当前参数的数据线数。数据行:xy,该特定点的连续 x 值的数量,最后是values。参数之间有一个空行。

正如我之前所说,脚本有效,但我觉得这可以更容易和更有效地完成。我只是不知道怎么做。所以这是一个自我提升的机会。

有什么比数组和 for 循环的复杂组合更好的方法来解决这个问题?

编辑

应该更清楚这一点,对不起。

输出为 1100 x 1300 网格,填充了从数据文件中读取的值。每个参数被写入不同的文件。数据线上的多个值意味着,该线具有 x(+n)、y 点的数据。

更新

我测试了解决方案,令我惊讶的是它比原始脚本慢(约 3 秒)。但是,脚本要小约 50%,这使得实际理解脚本的作用变得更加容易。在这种情况下,这比 3 秒的速度增益更重要。

这里是旧脚本中的一些代码。希望你能从中得到基本的想法。为什么更快?

0 投票
5 回答
2272 浏览

c# - 极稀疏数组的实现

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

谢谢