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

时间:2018-09-08 19:57:53

标签: arrays julia flat

我对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具有平面数组,但是如何通过任何其他平面数组访问它们。

2 个答案:

答案 0 :(得分:1)

您还有另外一对括号。

A[B]
A[ [1; 3; 5] ]
A[ [1, 3, 5] ]
A[ [1 3 5] ]
A[ 1:2:5 ]

所有工作均按要求进行。您可以使用任何有效索引或任何索引集合对数组进行索引。

但是,A[[B]]试图在位置A上索引[1;3;5],这是一个错误。

答案 1 :(得分:0)

您可以通过在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的元素。