Операции над вложенными массивами в APL
У меня есть данные в следующих структурах:
Nums←56 66 19 37 44 20 18 23 68 70 82
A←(⍳¨(3≤⍳4)/⍳4)
┌→────┬───────┐
│1 2 3│1 2 3 4│
└~───→┴~─────→┘
То, что я хочу сделать, это создать еще один вложенный массив, который будет иметь элементы со значениями из Nums
, выбранный с помощью индексов из A
выглядит так:
┌→───────┬───────────┐
│56 66 19│56 66 19 37│
└~──────→┴~─────────→┘
Затем я хочу выполнить операции над каждым элементом моего массива, но я думаю, что знаю, как идти дальше. Как мне создать такой массив в APL?
1 ответ
Решение
Как насчет
(⊂Nums){⍺[⍵]}¨A
и тогда вы можете пойти дальше и применить свой FN:
(⊂Nums){fn ⍺[⍵]}¨A
Вот еще один способ структурировать результат
A⌷¨¨⊂⊂Nums
56 66 19 56 66 19 37
В NARS2000 легко:
Nums←56 66 19 37 44 20 18 23 68 70 82
A←(⍳3)(⍳4)
⎕fmt A
┌2──────────────────┐
│┌3─────┐ ┌4───────┐│
││ 1 2 3│ │ 1 2 3 4││
│└~─────┘ └~───────┘2
└∊──────────────────┘
⎕fmt {Nums[⍵]}¨¨A
┌2─────────────────────────┐
│┌3────────┐ ┌4───────────┐│
││ 56 66 19│ │ 56 66 19 37││
│└~────────┘ └~───────────┘2
└∊─────────────────────────┘