我对Julia很新,甚至是编程新手。因此,请原谅我的简单怀疑。
考虑下面的Matlab示例:
A=[10; 20; 30; 40; 50];
B=[1; 3; 5];
在matlab中A(B)=0
的结果应该是[0.0 20 0.0 40 0.0]
。
如何在Julia中实现1-D阵列?
我有一个变量A
和B
:
julia> A
5×1 Array{Int64,2}:
10
20
30
40
50
julia> B
2-element Array{Int64,1}:
1
3
5
当我执行这个A[[B]]
ERROR: ArgumentError: invalid index: Array{Int64,1}[[1, 2]]
但是,此语句提供了以下结果:
julia> A[[1, 3 ,5]]
3-element Array{Int64,1}:
5
3
1
请指导我。我知道Julia有平面阵列,但是如何通过任何其他平面阵列访问它们。
你有一对额外的括号。
A[B]
A[ [1; 3; 5] ]
A[ [1, 3, 5] ]
A[ [1 3 5] ]
A[ 1:2:5 ]
一切按预期工作。您可以使用任何有效索引或任何索引集合索引数组。
然而,A[[B]]
试图在A
位置索引[1;3;5]
,这是一个错误。
你可以通过用qzxswpoi给出的索引覆盖A
的元素来得到你想要的结果,如下所示:
B
这里,点分配julia> A=[10; 20; 30; 40; 50];
julia> B=[1; 3; 5];
julia> A[B] .= 0;
julia> A
5-element Array{Int64,1}:
0
20
0
40
0
表示在原地改变A的元素。