Применить функцию к случайной строке матрицы
У меня матрица 5х5 M
и функция f
который работает на векторах. r ← ⊃?⍴M
индекс случайной строки M
, Мне нужно вернуть измененную версию M
без прямого назначения (это важно для более крупной программы), где f
применяется только к r⌷M
, Я делаю это путем отображения через M
строки, возвращающиеся f⍵
если индекс строки соответствует r, и просто ⍵
если это не так. Функция, которую я придумал:
({f(⍣(r = M⍳⍵))⍵}⍤1) M
Это работает, но это не идеально. Мне не нравится r = M⍳⍵
часть, потому что я ищу индекс ⍵
в каждом цикле. Я думаю, что было бы больше смысла работать через ⍳5
вместо этого, ссылаясь на каждую строку с точки зрения каждого ⍵
в этом векторе. Я не могу заставить это работать, хотя.
Любая помощь, делающая мою функцию менее уродливой, приветствуется.
1 ответ
f@r⊢M
Пример кода:
M←5 5⍴⍳25
f←-
r←⊃?⍴M
⎕←f@r⊢M
Пример результата:
1 2 3 4 5
¯6 ¯7 ¯8 ¯9 ¯10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25