标签: sparse-array

从npy文件加载稀疏数组

我正在尝试加载我之前保存的稀疏数组.保存稀疏数组很容易.试图阅读它是一种痛苦.scipy.load在我的稀疏数组周围返回一个0d数组.

import scipy as sp
A = sp.load("my_array"); A
array(<325729x325729 sparse matrix of type '<type 'numpy.int8'>'
with 1497134 stored elements in Compressed Sparse Row format>, dtype=object)
Run Code Online (Sandbox Code Playgroud)

为了获得稀疏矩阵,我必须展平0d数组,或者使用sp.asarray(A).这似乎是一种非常难以做到的事情.Scipy是否足够聪明才能理解它已经加载了一个稀疏数组?有没有更好的方法来加载稀疏数组?

python sparse-array scipy

10
推荐指数
2
解决办法
5925
查看次数

Java中的内存高效稀疏数组

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

我需要相当于一个List<T>Map<Integer,T>哪个

  1. 可以通过设置比以前遇到的任何键更大的键来按需增长.(可以假设键是非负的.)
  2. ArrayList<T>在大多数索引不是的情况下null,即在实际数据不是非常稀疏的情况下,就像存储器效率一样.
  3. 当指数稀疏时,消耗与非null指数数量成比例的空间.
  4. 使用的内存少于HashMap<Integer,T>(因为这会自动锁定密钥并且可能不会利用标量密钥类型).
  5. 可以在分摊日志(N)时间内获取或设置元素,其中N是条目数:不必是线性时间,二元搜索是可接受的.
  6. 在非病毒开源纯Java库中实现(最好在Maven Central中).

有谁知道这样的实用类?

我本来期望Commons Collections有一个,但它似乎没有.

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

java memory sparse-array

10
推荐指数
2
解决办法
1万
查看次数

Julia中的多维稀疏矩阵

为什么Julia中没有任何多维稀疏矩阵/数组?为什么我们只能有2D稀疏矩阵而不是3D稀疏矩阵(或数组)呢?

sparse-array julia

10
推荐指数
1
解决办法
1526
查看次数

Android:有没有通过SparseArray迭代的习惯用法

我使用一个唯一的int id列表作为快速查找表的用户名列表,并决定使用sparseArray但我希望能够打印以不时记录整个列表以进行调试.

SparseArray不可迭代,与util.Map接口不太相似

android idioms sparse-array

8
推荐指数
2
解决办法
9521
查看次数

在Mathematica中稀疏阵列上的Outer的有效替代?

假设我有两个非常大的列表{a1,a2,...}和{b1,b2,...},其中所有ai和bj都是大型稀疏数组.为了提高内存效率,我将每个列表存储为一个全面的稀疏数组.

现在我想在所有可能的ai和bj对上计算一些函数f,其中每个结果f [ai,bj]再次是稀疏数组.顺便提一下,所有这些稀疏阵列都具有相同的尺寸.

Flatten[Outer[f, {a1, a2, ...}, {b1, b2, ...}, 1], 1]
Run Code Online (Sandbox Code Playgroud)

返回所需的结果(原则上)它似乎消耗了过多的内存.并非最不重要,因为返回值是稀疏数组的列表,而一个全面的稀疏数组在我感兴趣的情况下效率更高.

是否有上述用途的有效替代方案Outer

更具体的例子:

{SparseArray[{{1, 1, 1, 1} -> 1, {2, 2, 2, 2} -> 1}],
 SparseArray[{{1, 1, 1, 2} -> 1, {2, 2, 2, 1} -> 1}],
 SparseArray[{{1, 1, 2, 1} -> 1, {2, 2, 1, 2} -> 1}],
 SparseArray[{{1, 1, 2, 2} -> -1, {2, 2, 1, 1} -> 1}],
 SparseArray[{{1, 2, 1, 1} -> 1, {2, 1, 2, 2} -> 1}],
 SparseArray[{{1, 2, …
Run Code Online (Sandbox Code Playgroud)

wolfram-mathematica sparse-array outer-join

8
推荐指数
2
解决办法
762
查看次数

8
推荐指数
2
解决办法
6367
查看次数

Matlab:每行或每列的第一个非零元素

例如,

A = [ -1   0  -2   0   0
   2   8   0   1   0
   0   0   3   0  -2
   0  -3   2   0   0
   1   2   0   0  -4];
Run Code Online (Sandbox Code Playgroud)

如何获得每行的第一个非零元素的向量?

matlab matrix sparse-array sparse-matrix

8
推荐指数
3
解决办法
1万
查看次数

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

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

但是,根据这篇文章:

无法保证for ... in将以任何特定顺序返回索引

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

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

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

<ol id="items"></ol>
Run Code Online (Sandbox Code Playgroud)
var list = [];

function addItem(index) {
    list[index] = { idx : index };
}

var insertOrder = [ 8, 1, 9, 2, 10, 3, 11, 4, 12, 5, 13, 6, 14, 7, 15 ];

for ( var i = 0; i < 15; i++ ) {
    addItem(insertOrder[i]);
}

for(var item in list) {
    $("#items").append("<li>" + list[item].idx + "</li>");
}
Run Code Online (Sandbox Code Playgroud)

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

javascript arrays sparse-array

7
推荐指数
1
解决办法
1793
查看次数

表示稀疏张量的数据结构?

在 C++ 中表示稀疏张量的合适数据结构是什么?我想到的第一个选项是 a,boost::unordered_map因为它允许快速设置和检索 an 元素等操作,如下所示:

A(i,j,k,l) = 5
Run Code Online (Sandbox Code Playgroud)

但是,我还希望能够对单个索引进行收缩,这将涉及对其中一个索引进行求和

C(i,j,k,m) = A(i,j,k,l)*B(l,m)
Run Code Online (Sandbox Code Playgroud)

使用 来实现这个运算符有多容易boost::unordered_map?有没有更合适的数据结构?

c++ sparse-array

6
推荐指数
1
解决办法
1361
查看次数

稀疏矩阵上的 einsum

似乎 numpy 的einsum函数不适用于scipy.sparse矩阵。有没有其他方法einsum可以做稀疏矩阵可以做的事情?

针对@eickenberg 的回答:我想要的特定 einsum 是numpy.einsum("ki,kj->ij",A,A)- 行的外积的总和。

numpy sparse-array sparse-matrix

6
推荐指数
1
解决办法
2578
查看次数