Операции над вложенными массивами в 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
└∊─────────────────────────┘
Другие вопросы по тегам