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

问题描述 投票:0回答:2

我对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阵列?

我有一个变量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有平面阵列,但是如何通过任何其他平面阵列访问它们。

arrays julia flat
2个回答
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],这是一个错误。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.