Monadi c ⍳
- это Генератор индекса . которая принимает форму массива s
в качестве единственного аргумента. Он генерирует массив формы s
, где каждый элемент является индексом для этого элемента:
⍳5 ⍝ vector
1 2 3 4 5
⍳2 3 ⍝ matrix
┌───┬───┬───┐
│1 1│1 2│1 3│
├───┼───┼───┤
│2 1│2 2│2 3│
└───┴───┴───┘
⍳2 3 4 ⍝ block of 2 layers, each with 3 rows and 4 columns
┌─────┬─────┬─────┬─────┐
│1 1 1│1 1 2│1 1 3│1 1 4│
├─────┼─────┼─────┼─────┤
│1 2 1│1 2 2│1 2 3│1 2 4│
├─────┼─────┼─────┼─────┤
│1 3 1│1 3 2│1 3 3│1 3 4│
└─────┴─────┴─────┴─────┘
┌─────┬─────┬─────┬─────┐
│2 1 1│2 1 2│2 1 3│2 1 4│
├─────┼─────┼─────┼─────┤
│2 2 1│2 2 2│2 2 3│2 2 4│
├─────┼─────┼─────┼─────┤
│2 3 1│2 3 2│2 3 3│2 3 4│
└─────┴─────┴─────┴─────┘
Хотя вы называете результат таблицей умножения, умножение не происходит, только сопоставление индексов вдоль каждого ось. Однако вы правы, что это похоже на внешний (не внутренний ) продукт с функцией конкатенации (∘.,
):
(⍳2)∘.,(⍳3)
┌───┬───┬───┐
│1 1│1 2│1 3│
├───┼───┼───┤
│2 1│2 2│2 3│
└───┴───┴───┘