【问题标题】:Using arrays as indices in Julia在 Julia 中使用数组作为索引
【发布时间】:2019-09-18 06:22:16
【问题描述】:

所以我试图在 Julia 中创建一个多维数组,但我不确定将它存储在向量中是否更智能/更容易。假设我有一个具有 N 个因子的 (M x M x M x .... x M) 矩阵,因此总共有 (M^N) 个条目。现在,我运行一个单独的程序,它为我提供索引,例如

ind = [1, 2, 4, 4, 5, ....., 2]

我想做的就是在这个给定的索引处更新我的矩阵 A(或向量)。

例如,我想做这样的事情:

index = [2,1,2]
A = reshape(collect(1:8),(2,2,2))
A[index] = 4

但我真正要做的是

A[2,1,2] = 4

A[index[1],index[2],index[3]] = 4

但是,这个解决方案是不可行的,因为维度的数量会变化并且在我的应用程序中非常大。我正在使用 Julia v0.6.4,发现有一个名为 sub2ind 的函数(在较新版本中被类似的函数取代)。但是,这个函数只接受单个数字,用逗号分隔,既不是数组也不是元组(根据文档:)

sub2ind(dims, i, j, k...) -> index

如何适当/有效地处理这个问题?任何帮助将不胜感激!

【问题讨论】:

  • Splatting 是正确的方法,但还要考虑您的程序是否可以将索引作为元组 (ind = (1, 2, 4, 4, 5, ....., 2)) 而不是向量 (ind = [1, 2, 4, 4, 5, ....., 2]) 返回,因为元组将相当大这里更快。

标签: julia


【解决方案1】:

你可以splatindex向量:

A[index...] = 4

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-30
    相关资源
    最近更新 更多