将函数应用于矩阵的随机行
Apply a function to a random row of a matrix
我有一个 5x5 矩阵 M
和一个对向量进行运算的函数 f
。 r ← ⊃?⍴M
是 M
的随机行的索引。我需要 return 没有直接赋值的 M
的修改版本(这对较大的程序很重要),其中 f
仅应用于 r⌷M
。我通过跨 M
的行进行映射来做到这一点,如果行的索引与 r 匹配,则 returning f⍵
,如果不匹配,则仅 ⍵
。我想出的函数是:
({f(⍣(r = M⍳⍵))⍵}⍤1) M
它有效,但并不理想。我不喜欢 r = M⍳⍵
部分,因为我在每个循环中都在搜索 ⍵
的索引。我认为跨 ⍳5
操作更有意义,根据此向量中的每个 ⍵
引用每一行。不过我似乎无法让它工作。
感谢任何使我的函数不那么丑陋的帮助。
示例代码:
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
我有一个 5x5 矩阵 M
和一个对向量进行运算的函数 f
。 r ← ⊃?⍴M
是 M
的随机行的索引。我需要 return 没有直接赋值的 M
的修改版本(这对较大的程序很重要),其中 f
仅应用于 r⌷M
。我通过跨 M
的行进行映射来做到这一点,如果行的索引与 r 匹配,则 returning f⍵
,如果不匹配,则仅 ⍵
。我想出的函数是:
({f(⍣(r = M⍳⍵))⍵}⍤1) M
它有效,但并不理想。我不喜欢 r = M⍳⍵
部分,因为我在每个循环中都在搜索 ⍵
的索引。我认为跨 ⍳5
操作更有意义,根据此向量中的每个 ⍵
引用每一行。不过我似乎无法让它工作。
感谢任何使我的函数不那么丑陋的帮助。
示例代码:
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