如何通过其他一维数组访问一维数组的元素?
How to access elements of 1-D array through some other 1-D array?
我是 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 中为一维数组实现同样的效果?
我有一个变量 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 有平面数组,但如何通过任何其他平面数组访问它们。
您可以通过在 B
给出的索引处用零覆盖 A
的元素来获得您想要的结果,如下所示:
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的元素。
你多了一对括号。
A[B]
A[ [1; 3; 5] ]
A[ [1, 3, 5] ]
A[ [1 3 5] ]
A[ 1:2:5 ]
一切如愿以偿。您可以使用任何有效索引或任何索引集合对数组进行索引。
但是,A[[B]]
尝试在位置 [1;3;5]
索引 A
,这是一个错误。
我是 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 中为一维数组实现同样的效果?
我有一个变量 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 有平面数组,但如何通过任何其他平面数组访问它们。
您可以通过在 B
给出的索引处用零覆盖 A
的元素来获得您想要的结果,如下所示:
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的元素。
你多了一对括号。
A[B]
A[ [1; 3; 5] ]
A[ [1, 3, 5] ]
A[ [1 3 5] ]
A[ 1:2:5 ]
一切如愿以偿。您可以使用任何有效索引或任何索引集合对数组进行索引。
但是,A[[B]]
尝试在位置 [1;3;5]
索引 A
,这是一个错误。