byColumn
New in version 1.30.21.
语法
byColumn(func, X)
参数
func 一个单目函数,支持以部分应用的形式传入。该函数可以是向量函数(输入与输出为等长的向量),亦可为聚合函数。
X 一个矩阵。X 的每一列均为 func 的参数。
详情
对矩阵 X 的每一列应用指定函数。
支持在响应式状态引擎中使用 byColumn
函数。
例子
对于不支持矩阵运算的单目向量函数,通过 byColumn
进行按列计算,等效于 each
。
$ def myvfunc(x): var(x).log()
$ m = matrix(1.1 2.3 2.1 3.5 4.2, 3.3 2.5 4.2 5.1 0, -1 3.3 2 1.7 2.3)
$ byColumn(myvfunc, m)
[0.3974329364109,1.334211281249665,0.945072533299607]
传入多元函数时,需要把该函数的其他参数通过部分应用进行固定,然后传入 func
。
$ byColumn(add{2}, m)
col1 col2 col3
3.1 5.3 1
4.3 4.5 5.3
4.1 6.2 4
5.5 7.1 3.7
6.2 2 4.3
$ byColumn(add{1 2 3 4 5}, m)
col1 col2 col3
2.1 4.3 0
4.3 4.5 5.3
5.1 7.2 5
7.5 9.1 5.7
9.2 5 7.3
func
是一个自定义函数。
$ def my_func(x){
$ return iif(x > 0, 1, -1)
$ }
$ m = matrix(3 -6 5 0, 2 -9 -4 5)
$ byColumn(my_func, m)
col1 col2
1 1
-1 -1
1 -1
-1 1
func
是一个嵌套函数。
$ m = matrix(1 5 3 , 7 5 2)
$ byColumn(accumulate{def (x, y):iif(x > 5, y-1, y+1), ,1}, m)
col1 col2
2 8
6 4
2 3
相关函数:byRow