Numpy矩阵的映射函数

3
我有两个numpy矩阵。其中一个包含lambda函数,另一个包含值。
是否有类似于Python的map函数的函数可让我获得预期结果?
是否有更好的方法?
functionMatrix = np.array([[lambda x:x**2, lambda x:x**3],[lambda x: x**2, 
lambda x: np.sqrt(x)]])
valueMatrix = np.array([[1,2],[3,4]])

expectedResult = np.array([[1,8],[9,2]])

1
如果你总是想要简单的指数,你可以避免使用lambda,而是像这样做:functionMatrix = np.array([[2, 3],[2, 0.5]]) 然后 valueMatrix ** functionMatrix (输出:array([[ 1., 8.], [ 9., 2.]]))。另外,根据你的期望输出,我认为你的意思是 lambda x: x**2 而不是 lambda x: x*2,以及 np.sqrt 而不是 np.square - sacuL
sacul - 你说得对,让我来修正一下。 它不总是简单的指数。有些函数可能是自然对数、倒数等。 - David
“有没有更好的方法?”这取决于您的所有lambda函数是否存在数学关系。将它们放入numpy数组中会得到一个“对象数组”,这是numpy中内置的一种方便功能,但它并没有利用正常数组的许多优点(从速度或内存角度来看)。 - Aaron
1个回答

3

这只是语法糖,但能够完成工作。

@np.vectorize
def apply_vec(f, x):
    return f(x)

result = apply_vec(functionMatrix, valueMatrix)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接