多维数组中的多重赋值

时间:2014-12-10 20:19:39

标签: arrays indexing julia

我有一个4x4的零数组。

julia> X = zeros(4,4)
4x4 Array{Float64,2}:
 0.0  0.0  0.0  0.0
 0.0  0.0  0.0  0.0
 0.0  0.0  0.0  0.0
 0.0  0.0  0.0  0.0

我有一个2xN数组,其中包含X中要分配新值的元素索引。

julia> ind = [1 1; 2 2; 3 3]
3x2 Array{Int64,2}:
 1  1
 2  2
 3  3

X中索引为ind中的行的所有元素分配值的最简单方法是什么? (类似于X[ind] = 2.0)。

julia> X
 2.0  0.0  0.0  0.0
 0.0  2.0  0.0  0.0
 0.0  0.0  2.0  0.0
 0.0  0.0  0.0  0.0

2 个答案:

答案 0 :(得分:3)

我不确定是否存在非循环方式。这有什么不对?

for i=[1:size(ind)[1]] 
    a, b = ind[i, :]  
    X[a, b] = 2.0
end

答案 1 :(得分:3)

user3467349的答案是正确的,但效率低下,因为它为索引分配了Array。此外,Julia 0.4中的符号[a:b] is deprecated。相反,您可以使用:

for i = 1:size(ind, 1)
  a, b = ind[i, :]
  X[a, b] = 2.0
end