在Julia中使用数组作为索引

Gre*_*gic 0 julia

因此,我试图在Julia中创建一个多维数组,但不确定将其存储在矢量中是否更聪明/更轻松。假设我有一个具有N个因子的(M x M x M x .... x M)矩阵,因此共有(M ^ N)个条目。现在,我运行一个单独的程序,该程序为我提供索引,例如

ind = [1, 2, 4, 4, 5, ....., 2]
Run Code Online (Sandbox Code Playgroud)

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

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

index = [2,1,2]
A = reshape(collect(1:8),(2,2,2))
A[index] = 4
Run Code Online (Sandbox Code Playgroud)

但我真正要做的是

A[2,1,2] = 4
Run Code Online (Sandbox Code Playgroud)

要么

A[index[1],index[2],index[3]] = 4
Run Code Online (Sandbox Code Playgroud)

但是,这种解决方案是不可行的,因为尺寸的数量是变化的,并且在我的应用程序中很大。我正在使用Julia v0.6.4,发现有一个名为sub2ind的函数(在较新版本中已由类似的函数替换)。但是,此函数仅采用单个数字,用逗号分隔,既不是数组也不是元组(根据文档:)

sub2ind(dims, i, j, k...) -> index
Run Code Online (Sandbox Code Playgroud)

如何正确/有效地解决此问题?任何帮助将不胜感激!

Kor*_*sbo 6

您可以图示index载体:

A[index...] = 4
Run Code Online (Sandbox Code Playgroud)