将函数应用于矩阵的随机行

Apply a function to a random row of a matrix

我有一个 5x5 矩阵 M 和一个对向量进行运算的函数 fr ← ⊃?⍴MM 的随机行的索引。我需要 return 没有直接赋值的 M 的修改版本(这对较大的程序很重要),其中 f 仅应用于 r⌷M。我通过跨 M 的行进行映射来做到这一点,如果行的索引与 r 匹配,则 returning f⍵,如果不匹配,则仅 。我想出的函数是:

({f(⍣(r = M⍳⍵))⍵}⍤1) M

它有效,但并不理想。我不喜欢 r = M⍳⍵ 部分,因为我在每个循环中都在搜索 的索引。我认为跨 ⍳5 操作更有意义,根据此向量中的每个 引用每一行。不过我似乎无法让它工作。

感谢任何使我的函数不那么丑陋的帮助。

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