如何通过其他一维数组访问一维数组的元素?

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 中为一维数组实现同样的效果?

我有一个变量 AB:

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,这是一个错误。