【发布时间】: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