在Julia中使用数组作为索引

在Julia中使用数组作为索引,julia,Julia,因此,我试图在Julia中创建一个多维数组,我不确定将其存储在向量中是否更智能/更容易。假设我有一个M x M x M x。。。。有N个因子的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 但我

因此,我试图在Julia中创建一个多维数组,我不确定将其存储在向量中是否更智能/更容易。假设我有一个M x M x M x。。。。有N个因子的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

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

sub2ind(dims, i, j, k...) -> index
我如何适当/有效地处理此问题?任何帮助都将不胜感激

您可以使用索引向量:


SpPutTin是正确的方法,但也要考虑你的程序是否可以将索引作为元组IN=1, 2, 4、4, 5、…、2而不是向量IN=[1, 2, 4,4, 5,…,2 ]返回,因为元组在这里会快得多。
sub2ind(dims, i, j, k...) -> index
A[index...] = 4