问题标签 [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.
python - 创建对角稀疏矩阵的有效方法
我使用 Numpy 在 Python 中有以下代码:
如何转换它以获得与不先创建p2
值相同的稀疏矩阵?p
p
c++ - 提升压缩矩阵存储
boostublas::compressed_matrix
应该只为非零元素分配空间。但在下面的例子中,我得到了奇怪的结果。
为什么只ublas::matix
取20
字节4x4 matrix
(而不是8*4*4=128
字节)ublas::compressed_matrix
,2*2=4
而非零元素取56
字节(而不是4*8=32
字节)?
我也很困惑如何在ublas::compressed_matrix
. 如果我尝试存储超过构造函数中设置的非零元素的数量会发生什么?
请帮助澄清。
c++ - 在 boost 中由compressed_matrix 分配的空间
boostcompressed_matrix 分配了多少空间?它只为非零元素分配空间是真的吗?如果这是真的,我不明白为什么下面的代码会给出 bad_alloc 错误。
它应该只为 3*m=3*10000*10000 个元素分配空间,对吗?
你能帮忙澄清一下吗?我可以使用什么数据结构来只为非零元素分配空间。其次,如何为非零元素设置值?
非常感谢。
c++ - 提升压缩矩阵基础
我对 boost::compressed_matrix 的工作原理感到困惑。假设我像这样声明压缩矩阵:
这为 1000x1000 矩阵中的 3*1000 个元素分配空间。现在我如何给它非零元素的位置?何时以及如何设置非零元素?是否每次我在矩阵中分配一个元素,例如 B(4,4)=4,它会将该元素标记为非零?
如果可能的话,如果您能帮助我通过示例学习这一点,我将不胜感激。对内部实现的一些见解会很棒。我想确保我不会通过猜测来编写次优的程序。
谢谢你!
matlab - 如何对大型稀疏矩阵进行排序,然后将结果导出到 matlab 中?
我必须处理一个大小为 6004*17842(doc*terms)的大型稀疏矩阵。函数 find() 已尝试获取其行、列和值,结果以 ascii 格式保存。但是这些术语在每个文档中都没有排序。谁能建议我一种对矩阵进行排序并导出排序结果的方法?
c++ - 更高效的稀疏矩阵元素访问器
我用成员写了一个小的稀疏矩阵类:
下面的方法是我用来访问矩阵元素的函数,如果不可能通过迭代器:
仍然需要经常调用此函数。有人知道如何改进此功能吗?提前谢谢。
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)。
有更好的主意吗?
haskell - Haskell中有任何稀疏线性代数包吗?
是否有任何软件包可以执行稀疏线性代数计算,可能基于快速高效的 C 库?我在 Hackage 上进行了搜索,但没有找到任何相关信息:使用 GSL、BLAS 和 LAPACK 的 hmatrix 很棒,但似乎不包括解决线性系统和稀疏矩阵的特征值/向量问题的特殊算法. 我想找到的,它类似于 scipy 中的 sparse.linalg 模块。谢谢!
perl - 如何使用 Perl 有效地填充 N x M 网格?
我有一个 Perl 脚本,它解析数据文件并写入 5 个填充有 1100 x 1300 网格的输出文件。该脚本有效,但在我看来,它很笨拙并且可能效率不高。该脚本也是继承的代码,我对其进行了一些修改以使其更具可读性。尽管如此,还是一团糟。
目前,脚本读取数据文件(~4Mb)并将其放入数组中。然后它遍历数组解析其内容并将值推送到另一个数组,最后将它们打印到另一个 for 循环中的文件。如果未找到某个点的值,则打印 9999。零是可接受的值。
数据文件有 5 个不同的参数,每个参数都写入自己的文件。
数据示例:
5559是当前参数的数据线数。数据行:x,y,该特定点的连续 x 值的数量,最后是values。参数之间有一个空行。
正如我之前所说,脚本有效,但我觉得这可以更容易和更有效地完成。我只是不知道怎么做。所以这是一个自我提升的机会。
有什么比数组和 for 循环的复杂组合更好的方法来解决这个问题?
编辑:
应该更清楚这一点,对不起。
输出为 1100 x 1300 网格,填充了从数据文件中读取的值。每个参数被写入不同的文件。数据线上的多个值意味着,该线具有 x(+n)、y 点的数据。
更新:
我测试了解决方案,令我惊讶的是它比原始脚本慢(约 3 秒)。但是,脚本要小约 50%,这使得实际理解脚本的作用变得更加容易。在这种情况下,这比 3 秒的速度增益更重要。
这里是旧脚本中的一些代码。希望你能从中得到基本的想法。为什么更快?
c# - 极稀疏数组的实现
我有一个非常稀疏的静态数组,有 4 个维度,每个维度为 8192,我想从(C#)进行查找。这些 4.5 * 10^15 值中只有 68796 个非零。在速度和低内存使用率至关重要的情况下,最快的方法是什么?
谢谢