问题标签 [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 投票
5 回答
3609 浏览

java - Android中的SparseArray克隆

我正在尝试遍历SparseArray并删除一些项目。

私有 SparseArray 记录;

但是如果我在迭代过程中删除项目,大小会改变,所以我不能使用它。我试图事先克隆稀疏数组。但是日食给了我错误

但是 SparseArray 的 api doc 和 Source code 都表明它存在并且是公开的。方法克隆也有一个注释@SuppressWarnings("unchecked")

抑制会改变方法的可见性吗?
任何人都知道如何解决这个问题或克隆 SparseArray?

0 投票
3 回答
748 浏览

arrays - 如何在 Actionscript 中获取稀疏数组中的元素数?

Actionscript 使用稀疏数组,所以我可以有一个这样的数组:

现在 myArray.length 将给我 23。有没有办法在不迭代每个元素的情况下获取数组中的实际项目数?

0 投票
5 回答
22320 浏览

java - SparseArray,检查键是否存在

我正在使用 a 实现位图缓存,HashMap<Integer, Bitmap>并在 Eclipse 中收到以下警告:

改用 new SparseArray(...) 以获得更好的性能。

我以前从未听说过那个类,但是检查它似乎没有containsKey()我在从缓存中检索位图以检查它是否存在于缓存中的方法,如果不存在,然后添加它。

关于检查密钥是否已经存在的最佳方法的任何想法?

我想我可以更改代码以使用此重载并检查是否为空?

0 投票
3 回答
3219 浏览

python - 稀疏 python 向量的范数

是否有可能在python中有效地获得稀疏向量的范数?

我尝试了以下方法:

但后来我得到了错误:

norm 函数仅适用于数组,因此可能这就是 csr_matrix 不起作用的原因,但后来我没有找到另一种有效计算范数的方法。一种可能的解决方案是计算:

但随后它首先扼杀了使用稀疏向量的目的。作为最后一种方法,我可以遍历向量的每个元素并手动计算范数,但由于效率非常重要,我一直在寻找更快、更容易实现的东西。

提前感谢您的帮助!

编辑:我尝试了所有建议,最好的解决方案是:

来自杜格尔。但是 Cython 解决方案也非常好,并且随着向量在不同零元素数量上的增长,效果更好。感谢大家的帮助!

0 投票
5 回答
14298 浏览

java - Java中的内存高效稀疏数组

(有一些关于节省时间的稀疏数组的问题,但我正在寻找内存效率。)

我需要相当于 a List<T>or Map<Integer,T>which

  1. 只需将密钥设置为比以前遇到的任何密钥都大,就可以按需增长。(可以假设键是非负的。)
  2. ArrayList<T>在大多数索引不是 的情况下null(即实际数据不是很稀疏时)的内存效率差不多。
  3. null当索引稀疏时,消耗的空间与非索引的数量成正比。
  4. 使用更少的内存HashMap<Integer,T>(因为这会自动装箱键并且可能不利用标量键类型)。
  5. 可以在摊销的 log(N) 时间内获取或设置元素,其中 N 是条目数:不必是线性时间,二进制搜索是可以接受的。
  6. 在非病毒开源纯 Java 库中实现(最好在 Maven Central 中)。

有谁知道这样的实用程序类?

我本来希望 Commons Collections 有一个,但似乎没有。

我发现org.apache.commons.math.util.OpenIntToFieldHashMap它看起来几乎正确,除了值类型是 aFieldElement似乎是无偿的;我只是想要T extends Object。看起来很容易将其源代码编辑为更通用,但如果有可用的二进制依赖项,我宁愿使用它。

0 投票
2 回答
685 浏览

ruby - 为自定义二维数组创建每种方法

我按照这些说明为二维数组创建了一个自定义类。

如何修改此类,以便可以使用 Object#each 遍历对象的第一级和第二级?请简单解释一下,我是新手。

我将如何在对象上使用 each 方法的示例:

0 投票
3 回答
762 浏览

java - “SparseArray - 索引中可能存在空白”是什么意思?

开发一个程序,它使用哈希映射,整数作为键,对象作为值。我不断收到 Lint 警告,通知 SparseArray 更有效,当我读到此链接中给出的相同内容时,索引中可能存在空白。这实际上意味着什么,我无法得到。

这是否意味着,如果我有像 1,5、10 这样的键,那么数组大小将为 3,索引为 1、5、10。(或)数组大小将为 11,存在 1、5、10 个索引的对象,其余为空?

请澄清一下。

0 投票
1 回答
3164 浏览

cuda - 如何使用 CUDA C 快速压缩稀疏数组?

概括

设备内存中的数组[A - B - - - C]但想要[A B C]- 使用 CUDA C 最快的方法是什么?

语境

A在设备(GPU)内存上有一个整数数组。在每次迭代中,我随机选择几个大于 0 的元素并从中减去 1。我维护L那些等于 0 的元素的排序查找数组:

在这里,我随机选择元素14从中减去 1。在 CUDA C 中的实现中,每个线程都映射到 中的一个元素A,因此查找数组是稀疏的,以防止数据竞争并保持排序顺序(例如[0 1 2 6],而不是[0 2 6 1]) . )

稍后,我将只对那些等于 0 的元素进行一些操作。因此我需要压缩我的稀疏查找数组L,以便我可以将线程映射到 0 元素。

因此,使用 CUDA C 在设备内存上压缩稀疏数组的最有效方法是什么?

非常感谢。

0 投票
2 回答
9481 浏览

android - 如何将稀疏数组存储在包中

我有一个SparseArray<myObject>并且想将它存储onSaveInstanceState在我的活动中的 bundle in 方法中并将其恢复为oncreate. 我找到putSparseParcelableArray了将 SparseArray 放入捆绑包中的方法,并在onSaveInstanceState方法中执行了此操作:

但是 eclips 显示了这个错误:

快速解决方法是将参数mySparsArray转换为SparseArray<? extends Parcelable>,但如果我这样做并在 onCreate 方法中获取它:

它得到这个错误:

如果这种方式是错误的,将 mySparseArray 放入 bundle 的解决方案是什么?任何帮助将非常感激。

0 投票
2 回答
328 浏览

java - 如何在应用程序启动时制作(并保存在 RAM 中)稀疏数组?(安卓)

我正在制作一个安卓应用程序。应用程序中有一个活动,当被触发时,它会生成一个稀疏数组并用数据填充它。现在这个过程在模拟器上最多需要 1 分钟,这很长。所以我想在应用程序启动时制作一次稀疏数组,并将稀疏数组保存在 RAM 中以供应用程序的生命周期使用。并且无论何时触发活动,它都应该访问 RAM 中的稀疏数组,而不是创建一个新数组,从而节省时间和处理能力。这可以做到吗,如果可以,怎么做?对不起,如果这个问题很愚蠢,我是安卓新手。谢谢!*编辑:这是稀疏数组制作函数的样子://访问稀疏数组制作函数的函数