问题标签 [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.

0 投票
1 回答
103 浏览

javascript - 在稀疏的 Javascript 数组上执行查找

我有一个有趣的 Javascript 任务(在 Node.js,FWIW 中执行):我需要取数据集的“加权中位数”,我有值(在这种情况下为收入)和每个数据集的权重。例如:

换句话说,8 人赚 2 万美元,2 人赚 5 万美元,等等。我需要“加权中位数”——所有 27 人的中位数。

天真的方法是创建一个数组并用每个值作为种子,如下所示:

然后可以轻松地获取该数组的中位数(即 20,000 美元)。实际上,我拥有每个样本 7,000 到 14,000 人的数据。虽然我确信 Node 可以处理这么大的数组,但感觉非常草率。

我目前的解决方案是计算假设的详细数组中中值的索引——在这种情况下为 13——并循环遍历收入和权重数组,将累积权重相加,直到达到或超过中点. 这是一个简化的例子。(显然,对于偶数列表,中位数需要稍微不同的规则。这只是一个 POC。)

这工作正常,但是当你想开始计算四分位数时它会变得混乱等等。对我来说更容易的是能够在详细数组中的适当位置创建一个稀疏的值数组,而无需填写所有中间值,然后在该数组上执行查找任何索引直到最大值。但是,如果(很可能)我在备用数组中寻找的索引未填充,我需要一些有效的机制来查找稀疏数组中的先前已知索引。

这似乎是一个相当普遍的问题。

0 投票
0 回答
573 浏览

python - Pandas:快速加入 MultiIndex 或重新索引

我有一些非常稀疏的多维时间序列,在某些时间有活动,而在其他时间活动为零。我将 Pandas 中的数据表示为 aSparseDataframeMultiIndex. 工作流程是对非零的小数据集进行计算,然后将结果放入大的稀疏数据框中。稍后我将对那个稀疏数据帧进行计算(即跟踪活动随时间的变化,包括零活动区域)。

问题在于将一小部分数据放入稀疏数据框中。下面是一个比我最终使用的数据集小得多的数据集。

使用常规索引就可以了:

使用 aMultiIndex会慢得多!

我认为问题可能出在 usingjoin上,所以我尝试了另一条路线。它更快,但没有解决问题。

reindex用它来代替确实更快join,但现在MultiIndex更慢,比较!

我有哪些选择?有没有办法用 实现常规索引的速度MultiIndex?有没有一种优雅的方法来制作像这样的常规索引函数MultiIndex?我是否应该重新考虑如何做到这一切?

0 投票
1 回答
217 浏览

c++ - 如何在已有的 3 标准压缩行/列数组上包装 Eigen::SparseMatrix

注意:我已经问过这个问题,但由于“太宽泛”而没有太多解释而被关闭。我看不出这个问题如何更具体(它针对特定用途处理特定库的特定类......),所以我认为这类似于“版主的错误”并再次询问。 ..

我想在稀疏矩阵上使用 Eigen 执行稀疏矩阵/矩阵乘法。这些矩阵已经在我正在处理的标准 3 数组压缩行/列存储中的代码中定义。

然后我想使用 Eigen::SparseMatrix 类作为这些数组的包装器(假设内部 Eigen 使用这样的 3 数组存储)以避免在内存中重复矩阵。我想做类似以下的事情:

有可能吗?如果可以,怎么做?

非常感谢

0 投票
2 回答
632 浏览

java - 为什么 SparseIntArray.equals(Object) 不起作用?

我正在使用 aSparseIntArray并且我对这种行为感到困惑:

输出:

我知道在两个对象之间使用 == 会比较对象地址,在这种情况下是不同的,但是我在这里使用SparseIntArray.equals(Object other)并且预期的结果并不意外。

我确信我可以推出自己的比较方法,但这听起来有点傻。Object.equals(Object other)如果我们不能依赖它,那么拥有一个基类方法有什么意义呢?

有人可以指出任何错误吗?

0 投票
1 回答
97 浏览

java - 从模型中检索 SparseArray 数据

我有一个“DayForecast”模型,其中包含另一个模型“WeatherCondition”的 SparseArray,它每 3 小时有几个关于天气条件的信息(所以那里有 8 个天气条件模型)。

DayForecast.java:

}

WeatherCondition.java

片段.java:

我想做的是在我的片段中构建 WeatherConditions 的 listView。

我成功检索到传递给我的片段的 DayForecast 对象的其他数据,但我正在努力检索天气条件并构建 listView。

有人能帮助我吗?

谢谢

0 投票
0 回答
65 浏览

java - SparseBooleanArray 的副作用?

我有一个 ListView,我可以在其中选择多个项目。

然后,我扫描实际选择了哪些。

以下代码不会对我造成影响。

那可能行得通。漂亮,事实上。问题是我没有检查是否实际选择了 ListView 中的网络。这很重要,因为虽然用户可能在某一时刻选择了网络(这是它位于 SparseBooleanArray 中的原因),但他们可能已经取消选择它,在这种情况下,SparseBooleanArray 中的值将是 false。

所以我尝试了这个。

现在,我在checkedNetworks.keyAt(i). 这意味着我们通过了 if 语句子句,然后出现了一些 derped。我不知道为什么会这样。

这是堆栈跟踪中唯一的相关信息。

0 投票
3 回答
2257 浏览

numpy - 点云中的局部最大值

我有一个点云 C,其中每个点都有一个关联的值。假设这些点位于二维空间中,因此每个点都可以用三元组 (x, y, v) 表示。

我想找到局部最大值的点子集。也就是说,对于某个半径 R,我想找到 C 中点 S 的子集,使得对于 S 中的任何点 Pi(值为 vi),在 Pi 的 R 距离内没有 C 中的点 Pj,其值 vj 为大于六。

我知道如何在 O(N^2) 时间内做到这一点,但这似乎很浪费。有没有一种有效的方法来做到这一点?


旁注:

  • 这个问题的根源是我试图在稀疏矩阵中找到局部最大值,所以在我的例子中,x,y 是有序整数 indeces - 如果这简化了问题,请告诉我!
  • 如果解决方案仅适用于曼哈顿距离或其他什么,我将非常高兴。
  • 我在 python 中,所以如果有某种很好的矢量化 numpy 方法可以做到这一点,那就太好了。
0 投票
2 回答
2413 浏览

javascript - 我应该如何按索引顺序迭代稀疏数组?

我有一个稀疏数组,其内容不能保证按索引顺序插入,但需要按索引顺序迭代。要遍历稀疏数组,我知道您需要使用 for..in 语句。

但是,根据这篇文章

不能保证 for...in 会以任何特定顺序返回索引

但是像这样的stackoverflow问题表明,虽然不能保证对象属性顺序,但数组顺序是:

JavaScript 不保证对象中的属性顺序,您需要使用数组。

我在最新版本的 Chrome、Firefox 和 IE 中对此进行了测试。

所有人似乎都尊重索引顺序,所以我可以相信这总是如此吗?否则,我如何最好地按索引顺序获取它们?

0 投票
1 回答
351 浏览

java - writeSparseArray 支持 SparseArray?

我有一个参数SparseArray<int[]>,想序列化它。

但是writeSparseArray(Object)对于 Parcelable 似乎不支持int[]。有没有其他方法可以序列化SparseArray<int[]>,或者只更改int[]为对象?

0 投票
1 回答
3332 浏览

android - HashMap, SparseArray in Android: multithread a concern?

I know neither HashMap nor SparseArray are threadsafe. Do I have to worry about that if I have a central data repository as HashMap which can be accessed by the activity and potentially by an AsyncTask?

Would it be advisable to use a HashTable or better ConcurrentHashMap to be on the safe side?