问题标签 [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 回答
1427 浏览

c++ - 为什么这个 SOR 求解器的速度取决于输入?

与我的另一个问题相关,我现在修改了稀疏矩阵求解器以使用 SOR(连续过度松弛)方法。现在的代码如下:

现在奇怪的是:如果我增加omega(松弛因子),执行速度开始显着依赖于各种数组中的值!

对于omega = 1.0f,执行时间或多或少是恒定的。对于omega = 1.8,第一次执行这 10 次通常需要 5 毫秒step(),但在模拟过程中这将逐渐增加到接近 100 毫秒。如果我设置omega = 1.0001f,我会看到执行时间相应地略有增加;越高omega,模拟过程中的执行时间就越快。

由于所有这些都嵌入在流体求解器中,因此很难提出一个独立的示例。但是我已经保存了初始状态并在每个时间步重新运行该状态的求解器,以及求解实际时间步。对于初始状态,它很快,对于随后的时间步长,它逐渐变慢。由于其他条件相同,这就证明了这段代码的执行速度取决于这六个数组中的值。

这在使用 g++ 的 Ubuntu 以及使用 VS2008 为 32 位编译时在 64 位 Windows 7 上是可重现的。

我听说 NaN 和 Inf 值对于浮点计算可能会更慢,但不存在 NaN 或 Inf。浮点计算的速度是否可能取决于输入数字的值?

0 投票
2 回答
1169 浏览

python - scipy.sparse 矩阵的索引操作的向量化

即使所有内容似乎都已矢量化,以下代码运行速度也很慢。

问题似乎是索引操作是作为python函数实现的,调用A[i,j]结果会产生以下分析输出

也就是说,python 函数_get_single_element被调用了 100000 次,这确实是低效的。为什么这不是在纯 C 中实现的?有人知道绕过这个限制并加快上述代码的方法吗?我应该使用不同的稀疏矩阵类型吗?

0 投票
2 回答
306 浏览

database - 您可以让 Tableau 使用稀疏列吗?

我们正在评估 Tableau 并注意到它似乎无法识别我们 SQL Server 2008 表中的稀疏列。这是可能的还是有任何常见的解决方法?

0 投票
1 回答
3342 浏览

r - 在 R 中,使用命名行时,可以将稀疏矩阵列添加(连接)到另一个稀疏矩阵吗?

我有两个稀疏矩阵,m1并且m2

我想让cbind()他们制作一个稀疏矩阵,例如:

但是cbind()忽略命名的行:

有没有办法在没有蛮力循环的情况下做到这一点?

0 投票
3 回答
36543 浏览

python - Scipy稀疏...数组?

所以,我正在使用非常稀疏的 numpy 数组进行一些 Kmeans 分类 - 很多很多零。我想我会使用 scipy 的“稀疏”包来减少存储开销,但我对如何创建数组而不是矩阵有点困惑。

我已经阅读了有关如何创建稀疏矩阵的教程: http ://www.scipy.org/SciPy_Tutorial#head-c60163f2fd2bab79edd94be43682414f18b90df7

为了模拟一个数组,我只创建了一个 1xN 矩阵,但正如您可能猜到的那样,Asp.dot(Bsp) 并不能很好地工作,因为您不能将两个 1xN 矩阵相乘。我必须将每个数组转置为 Nx1,这很蹩脚,因为我会为每个点积计算都这样做。

接下来,我尝试创建一个 NxN 矩阵,其中第 1 列 == 第 1 行(这样您可以将两个矩阵相乘并将左上角作为点积),但结果证明效率非常低。

我很想使用 scipy 的 sparse 包作为 numpy 的 array() 的神奇替代品,但到目前为止,我还不确定该怎么做。

有什么建议吗?

0 投票
3 回答
2473 浏览

linux - How to check if the block is present in a sparse file (for simple copy-on-write)?

How to get sparse block size and check if data is present at the given offset in sparse file in reiserfs/ext3 in Linux?

I want to use it to implement simple copy-on-write block device using FUSE.

Or I should better keep a bitmap in a separate file?

0 投票
4 回答
11606 浏览

sql - 在 PostgreSQL 中表示稀疏数据

在 PostgreSQL 中表示稀疏数据矩阵的最佳方法是什么?我看到的两种明显的方法是:

  1. 将数据存储在一个表中,每个可能的功能(可能数百万)都有一个单独的列,但对于未使用的功能,默认值为 NULL。这在概念上非常简单,但我知道对于大多数 RDMS 实现来说,这通常是非常低效的,因为 NULL 值通常会占用一些空间。但是,我读了一篇文章(不幸的是找不到它的链接)声称 PG 不占用 NULL 值的数据,使其更适合存储稀疏数据。

  2. 创建单独的“行”和“列”表,以及一个中间表来链接它们并在该行存储列的值。我相信这是更传统的 RDMS 解决方案,但与之相关的复杂性和开销更大。

我还发现了 PostgreDynamic,它声称可以更好地支持稀疏数据,但我不想仅仅为了这个特性而将我的整个数据库服务器切换到 PG 分支。

还有其他解决方案吗?我应该使用哪一个?

0 投票
5 回答
5353 浏览

matlab - 从稀疏矩阵中获取向量的最佳方法

我有一个m x n矩阵,其中每一行由零和每一行的相同值组成。

一个例子是:

在此示例中,第一列由0s 和-0.6、第二个01.8、第三个-2.3等组成。

在这种情况下,我想将 m 减少到 1(从给定矩阵中获取一个向量),所以在这个例子中,一个向量将是[-0.6 1.8 -2.3 3.4 -3.8 -4.3]

有谁知道从这样的矩阵中获取向量的最佳方法是什么?

谢谢!

0 投票
2 回答
1415 浏览

python - 将 numpy 数组添加到 scipy.sparse.dok_matrix

我有一个scipy.sparse.dok_matrix(维度 mxn),想要添加一个长度为 m 的平面 numpy 数组。

dok_matrix.__setitem__但是,此代码在尝试删除不存在的键 ( del self[(i,j)])时会引发异常。

所以,现在我正在以不优雅的方式这样做:

感觉非常低效。那么,最有效的方法是什么?

谢谢!

0 投票
1 回答
453 浏览

matlab - MATLAB:将两个数组转换为稀疏矩阵

我正在寻找将两个数组转换为稀疏矩阵的命令或技巧。这两个数组包含 x 值和 y 值,它们给出了笛卡尔坐标系中的坐标。我想对坐标进行分组,如果该值介于 x 轴和 y 轴上的某个值之间。

这个小技巧有简单的方法吗?