在具有多个参数的函数上使用np.apply_along_axis

时间:2019-11-23 17:19:53

标签: python numpy

我想在矩阵的所有行上应用一种方法,然后获得结果的平均值。

具体来说,我有一个方法:

import numpy as np
def relu(x, grad=False):
    numpy_x= np.array(x)
    if grad:
        return np.where(numpy_x <= 0, 0, 1)
    return np.maximum(0, numpy_x)

我有一个numpy数组:

a=np.array([[1,2,3],[2,3,4]])

我想将relu应用于数组的所有行并将它们汇总。因此,我尝试执行以下操作以首先将relu应用于所有行:

np.apply_along_axis(relu, 1,a)

但是,有一个问题,我们可以将param grad = False的relu应用于所有行。如果我们想将relu(,grad = True)应用于a的所有行怎么办?

1 个答案:

答案 0 :(得分:1)

我不完全了解您的问题。与默认参数有关吗?如果是这样,请尝试

np.apply_along_axis(lambda x: relu(x, grad=True), 1, a)

编辑

如果要平均结果,我相信以下代码就足够了:

avg_relu = np.mean(relu(a, False), axis=1)
avg_relu_grad = np.mean(relu(a, True), axis=1)