Использование массивов в качестве индексов в Юлии - PullRequest
0 голосов
/ 29 апреля 2019

Итак, я пытаюсь создать многомерный массив в Джулии, и я не уверен, умнее / проще хранить его в векторе или нет. Допустим, у меня есть матрица (M x M x M x .... x M) с N факторами, то есть всего (M ^ N) записей. Теперь я запускаю отдельную программу, которая дает мне индексы, например,

ind = [1, 2, 4, 4, 5, ....., 2]

и все, что я хотел бы сделать, это обновить мою матрицу A (или вектор) по данному индексу.

Так, например, я хотел бы сделать что-то вроде этого:

index = [2,1,2]
A = reshape(collect(1:8),(2,2,2))
A[index] = 4

но что мне действительно нужно сделать, это

A[2,1,2] = 4

или

A[index[1],index[2],index[3]] = 4

Однако это решение неосуществимо, поскольку число измерений варьируется и очень велико в моем приложении. Я использую Julia v0.6.4 и обнаружил, что есть функция с именем sub2ind (которая была заменена аналогичной функцией в более новых версиях). Однако эта функция принимает только отдельные числа, разделенные запятыми, которые не являются ни массивами, ни кортежами (согласно документации:)

sub2ind(dims, i, j, k...) -> index

Как мне решить эту проблему надлежащим образом / эффективно? Любая помощь будет принята с благодарностью!

1 Ответ

6 голосов
/ 29 апреля 2019

Вы можете Сплат index вектор:

A[index...] = 4
...