Применить функцию к случайной строке матрицы

У меня матрица 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
Другие вопросы по тегам