【问题标题】:Convert a 1-based array to a 0-based array in Julia在 Julia 中将基于 1 的数组转换为基于 0 的数组
【发布时间】:2019-06-06 11:54:08
【问题描述】:

我正在编写一些数字代码,其中使用基于 0 的索引比使用 Julia 默认的基于 1 的索引更方便。 Julia 确实支持基于 0 的索引,但它的 documentation 是针对开发人员的,所以我对如何使用它有点困惑。

特别是:如果我调用rand(10,10),我会得到一个索引从 1 到 10 的 10x10 数组。是否有一个简单的等效命令将返回一个索引从 0 到 9 的数组?或者,我可以轻松地将其转换为基于 0 的数组而不是基于 1 的数组吗?

【问题讨论】:

  • @BogumiłKamiński 谢谢,这非常有用!所以似乎命令OffsetArray(rand(10,10),0:9,0:9) 做了我想要的。这是正确的做法吗?
  • 是的(评论中有 15 个字符的占位符)
  • @BogumiłKamiński 谢谢。我已经发布了一个自我回答。 (如果您关心分数,我很乐意将其删除并让您发布答案,但我假设您不关心。)

标签: julia


【解决方案1】:

我发布了一个自我回答,因为这个问题是由 Bogumił Kamiński 在 cmets 中回答的。

有一些用户级文档here,尽管在撰写本文时它相当短且完全由示例组成,因此必须推断出预期的语义并猜测最佳实践。

不过,好像是命令

OffsetArray(rand(10,10),0:9,0:9)

达到了我的要求,并且 Bogumił Kamiński 确认这是正确的方法,因此可以猜测这不会不必要地复制数组等。

人们希望在某个时候会编写一些适当的文档,因为这是一项非常重要的功能。 (人们希望 Julia 的许多重要特性都能如此。)

【讨论】:

  • 您可以通过编写x = rand(10,10); y = OffsetArray(rand(10,10),0:9,0:9); parent(y) === x 来检查该数组是否只是原始数组的包装器,这会产生true
  • @BogumiłKamiński 如果知道parent 方法,当然可以做到这一点。 (我现在就这么做 - 谢谢!)
  • 这就是我写评论的原因:)。
  • @Nathaniel,通常用户是贡献文档的最佳人选,因为与编写代码的人相比,他们更清楚自己的困惑。如果愿意,请单击 OffsetArrays 的 README.md 文件,然后单击小铅笔图标,开始改进它!
  • 嗯,这当然不是真的。任何拥有浏览器的人都可以进行改进;如果您还可以阅读代码或只是尝试演示,那么您可以很好地了解该包应该如何工作(这是一个非常简单的包)。您建议的任何更改都将在合并之前由具有提交权限的人进行审查,因此您绝不可能破坏任何内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多