首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >零碎/非毗连的恒河?

零碎/非毗连的恒河?
EN

Stack Overflow用户
提问于 2016-01-31 04:17:53
回答 1查看 208关注 0票数 7

在Julia中,是否存在分段/非连续范围的对象类?例如,我可以创建一个常规范围:

代码语言:javascript
复制
a = UnitRange(1:5)

但是,如果我想把它和其他范围结合起来:

代码语言:javascript
复制
b = UnitRange([1:5, 8:10, 4:7])

我目前找不到对象或方法。在这种情况下,有一个PiecewiseIncreasingRanges模块(https://github.com/simonster/PiecewiseIncreasingRanges.jl)正是我想要的,只不过顾名思义,它要求范围单调增加。

这方面的上下文是,我正在寻找一种方法来为带有重复行的稀疏矩阵创建一个压缩的、内存高效的SparseMatrixCSC类型。RLEVectors模块将在稀疏矩阵类中很好地节省非零值向量上的空间。现在,尽管我试图为也定义稀疏矩阵的行值向量节省空间,因为一系列重复行将导致该向量中的值范围(例如,如果稀疏矩阵的前10行,甚至前10行中的某些列是相同的,那么行值向量中就会有很多1:10模式)。

更广泛地说,我想要一个范围,比如我试图在上面创建的b对象,我可以在这个范围上进行迭代循环,得到:

代码语言:javascript
复制
for (idx, item) in enumerate(hypothetical_object)
    println("idx: $idx, item: $item")
end

idx: 1, item: 1
idx: 2, item: 2
...
idx: 5, item: 5
idx: 6, item: 8
idx: 7, item: 9
idx: 8, item: 10
idx: 9, item: 4
idx: 10, item: 5
...

更新:我正在考虑的一件事,如果没有听到其他建议,我可能会尝试实现,那就是创建一个PiecewiseIncreasingRange对象数组,为稀疏矩阵中的每个列创建一个数组。(然后,我可能也会将非零值向量分解成一个单独的片段数组,我的稀疏矩阵的每个列也有一个)。这至少是相对容易实现的。我对此没有很好的理解,在计算效率方面,这与我在这个问题中寻找的对象的类型相比是如何的。我怀疑内存需求大概是一样的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-20 15:35:12

要遍历范围序列(或其他迭代器),可以在chain包中使用Iterators.jl函数。

例如:using Iterators b = chain(1:5, 8:10, 4:7) for i in b println(i) end输出每个范围的元素。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35110277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档