Как получить доступ к элементам 1-D массива через какой-либо другой 1-D массив? - PullRequest
0 голосов
/ 08 сентября 2018

Я очень новичок в Юлии, даже новичок в программировании.Поэтому, пожалуйста, извините меня за простые сомнения.

рассмотрите приведенный ниже пример Matlab:

A=[10; 20; 30; 40; 50];
B=[1; 3; 5];

Результат A(B)=0 в matlab должен быть [0.0 20 0.0 40 0.0].

Как мне добиться того же в Джулии для 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

Пожалуйста, направьте меня.Я знаю, что у Джулии плоский массив, но как получить к ним доступ через любой другой плоский массив.

Ответы [ 2 ]

0 голосов
/ 09 сентября 2018

У вас есть дополнительная пара скобок.

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 голосов
/ 09 сентября 2018

Вы можете получить желаемый результат, переписав элементы 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 на месте.

...