问题标签 [sparse-array]
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.
javascript - JavaScript 中的稀疏数组和归约
有人会认为在 JavaScript:
var array = [1,2,undefined,4];
中与:
但事实并非如此。这段代码显示了它:
输出:
为什么 array1 中的 undefined 与 array2 中的 undefined 不一样,为什么 for 循环的行为相同而 reduce 不一样?
optimization - 优化稀疏数组数学
我有一个稀疏数组:term_doc
它的大小是 Float64 的 622256x715。它非常稀疏:
- 在其约 444,913,040 个单元中,通常只有大约 22,215 个是非空的。
- 在 622256 行中,只有 4,699 行被占用
- 尽管 715 列中的所有列都已被占用。
我想要执行的运算符可以描述为返回该矩阵的行规范化和列规范化版本。
我写的朴素非稀疏版本是:
运行这个:
这相当简单。它会咀嚼内存,如果垃圾收集没有在正确的时间发生(因此我手动调用它),它会崩溃。但它相当快
我想让它在稀疏矩阵上工作。为了不破坏我的记忆,因为从逻辑上讲它是一个更快的操作——更少的单元需要操作。
它永远不会完成。它最多输出“N Done”,但从不输出“P Done”。我已经让它运行了几个小时。
- 我怎样才能优化它,以便它可以在合理的时间内完成?
- 或者如果这不可能,请解释原因。
java - 签入函数时数组的大小错误
我正在尝试从稀疏布尔数组中的列表视图中获取所有选中的项目,并将该数组传递给一个函数,该函数向用户显示一个对话框,然后单击“是”在数据库中为稀疏数组中的选定项目做一些事情。
我面临的问题是在调用函数之前,我检查了稀疏数组的大小,它显示了正确的大小,但是我传递给它的函数,一旦它被调用,它就会显示大小为 0。我不知道为什么会这样。
这就是我正在做的--->
这是我传递给它的方法--->
对于第一个日志,我得到正确的大小,但在第二个日志中为 0。我不知道出了什么问题。任何帮助将非常感激。
python - 是否有类似 coo_matrix 但用于稀疏向量的东西?
我正在尝试从有一些重叠索引的一系列数组中创建一个稀疏向量。对于矩阵,scipy中有一个非常方便的对象可以做到这一点:
因此,如果数据碰巧有重复的元素(因为它们的 i,j 索引相同),则将这些元素相加到最终的稀疏矩阵中。我想知道是否可以对稀疏向量做类似的事情,还是我只需要使用这个对象并假装它是一个 1 列矩阵?
java - 未排序的稀疏数组
我有一个SparseArray键值对。密钥将是我的 ID,我正在使用单独维护的排序顺序号对值进行排序。但是当我将数据放入 SparseArray 时,键会被排序,并且排序顺序会根据键进行更改。但是我需要完全按照我放入排序数组的值。我怎样才能
python - 具有稀疏数据的列表消耗的内存少于与 numpy 数组相同的数据
我正在使用非常高维的向量进行机器学习,并且正在考虑使用 numpy 来减少使用的内存量。我运行了一个快速测试,看看使用 numpy (1)(3) 可以节省多少内存:
标准清单
numpy 数组
内存使用 (2)
正如我所料。
通过使用本机浮点数分配一个连续的内存块,numpy 仅消耗标准列表正在使用的内存的大约一半。
因为我知道我的数据非常空闲,所以我对稀疏数据进行了相同的测试。
标准清单
numpy 数组
内存使用 (2)
现在突然之间,python 列表使用了 numpy 数组使用的内存量的一半!为什么?
One thing I could think of is that python dynamically switches to a dict representation when it detects that it contains very sparse data. Checking this could potentially add a lot of extra run-time overhead so I don't really think that this is going on.
Notes
- I started a fresh new python shell for every test.
- Memory measured with htop.
- Run on 32bit Debian.
javascript - Node.js 中稀疏数组的内存消耗
我编写了一个生成数组的小程序,它运行的时间很长(几乎永远;-)):
当我创建一个长度为的稀疏数组而不是空数组时,i
程序崩溃得非常快:
实际上我达到i
等于 17424,然后我收到一条错误消息告诉我
Node.js 将我带回控制台。由于唯一的区别是第二个产生比第一个“更大”的空数组,这意味着长度为空的稀疏数组n
占用n
的空间是长度为的空数组的空间1
。
我对此是否正确(特别是对于 Node.js)?
还有一个问题:如果我跑步
然后我达到 1286175,然后它再次崩溃:
为什么这与其他两个选项的行为不同?
PS:我正在使用 Node.js 0.12.0 在 OS X 上运行它。
c++ - 使用推力进行流压缩;最佳实践和最快的方法?
我有兴趣移植一些现有代码以使用推力,看看我是否可以相对轻松地在 GPU 上加速它。
我要完成的是流压缩操作,其中只保留非零元素。根据下面的示例代码,我大部分时间都在工作。我不确定如何解决的部分是在压缩发生后处理 d_res 和 h_res 中的所有额外填充空间。
该示例仅使用 0-99 序列,所有偶数条目都设置为零。这只是一个例子,真正的问题将是一个一般的稀疏数组。
这个答案对我有很大帮助,尽管在读取数据时,大小是不变的: How to quick to compact a sparse array with CUDA C?
我怀疑我可以通过计算 d_src 中 0 的数量来解决这个问题,然后只将 d_res 分配为那个大小,或者在压缩之后进行计数,并且只复制那么多元素。这真的是正确的方法吗?
我觉得通过巧妙地使用迭代器或推力的其他一些特性,将会有一些简单的解决方法。
另外,我是推力的新手,所以如果上面的代码有任何明显的缺陷,不符合使用推力的推荐做法,请告诉我。
同样,速度总是令人感兴趣的。阅读一些不同的推力教程,似乎这里的变化很小,可能会有很大的速度节省或浪费。所以,请让我知道是否有一种聪明的方法可以加快速度。
arrays - 在咖啡脚本中声明稀疏数组
在 Javascript 中,我可以声明一个稀疏数组,例如:
但这在 Coffeescript 中给出了一个错误。那么如何在 Coffeescript 中创建稀疏数组呢?
我想在一个任务中完成它,而不是喜欢:
java - check if there is at least a single true value in SparseBooleanArray
I'm creating an Android app with a ListView
and I'm using this line:
Then I want to iterate over the array but only if there is at least a single value which is true in the checkedPositions
array.
Can something like this be done?