在Julia中使用数组作为索引
因此,我试图在Julia中创建一个多维数组,我不确定将其存储在向量中是否更智能/更容易。假设我有一个M x M x M x。。。。有N个因子的x M矩阵,因此总共有M^N个条目。现在,我运行一个单独的程序,该程序为我提供索引,例如在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 但我
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