Python 使用 ndarray 中的每个元素作为 lambda 函数的参数

Python use every element in ndarray as param for lambda function

我正在尝试计算 R^n -> R^m 中任何变换的向量基。
为了实现这一点,我编写了 lamba 函数来表示实际函数。一些样本是:

R2 -> R2: g1 = lambda x,y: np.array([2*x+y, x+2*y])
R3 -> R1: g3 = lambda x,y,z: np.array([x, -2*y, 3*z])

为了让一个函数完成我的工作,我想到了这个:

def calculate_Vector_Basis(f, numberOfArgs):
    """
    Calculates the result for every base vector ex, ey, ...
    Params:
        f : function with generic number of arguments
        numberOfArgs: The number of arguments for the generic function
    Returns:
        [] : Array of base vectors
    """

    # Collection of base vectors
    vector_basis = []
    for i in range(numberOfArgs):
        # Create unit vector e with zeros only
        base = np.zeros(numberOfArgs)
        # Set 1 where at the axis required (for R3: x = [1 0 0], y = [0 1 0], z = [0 0 1])
        base[i] = 1
        # Call function f for every unit vector e
        vector_basis.append(f(base[0], base[1]))
    return vector_basis

该函数应根据给定的有理数 n 维空间的维数迭代并创建单位向量。
样本:

R2 = [1 0], [0 1]
R3 = [1 0 0], [0 1 0], [0 0 1]

我卡在了我想调用传入的 lambda function f 的地方。
根据 f's 定义,我最多需要 1 个参数。
对于 R2,我必须在 R3 中调用 f(base[0], base[1]),我必须调用 f(base[0], base[1], base[2])base 是一个看起来像这样 [xval, yval, ...]ndarray。有可能用 every value in the ndarray 调用 f 吗?

是的,可以用 argument unpacking:

def calculate_Vector_Basis(f, numberOfArgs):
    """
    Calculates the result for every base vector ex, ey, ...
    Params:
        f : function with generic number of arguments
        numberOfArgs: The number of arguments for the generic function
    Returns:
        [] : Array of base vectors
    """

    # Collection of base vectors
    vector_basis = []
    for i in range(numberOfArgs):
        # Create unit vector e with zeros only
        base = np.zeros(numberOfArgs)
        # Set 1 where at the axis required (for R3: x = [1 0 0], y = [0 1 0], z = [0 0 1])
        base[i] = 1
        # Call function f for every unit vector e
        vector_basis.append(f(*base))
    return vector_basis