在NumPy数组的每一行(逐行)上应用函数。

21 浏览
0 Comments

在NumPy数组的每一行(逐行)上应用函数。

我有一个函数 -

def function(x):
    x , y = vector
    return exp(((-x**2/200))-0.5*(y+0.05*(x**2) - 100*0.05)**2)

假设我想在以下点上评估它(第一列是x值,第二列是y值)-

array([[-1.56113514,  4.51759732],
       [-2.80261623,  5.068371  ],
       [ 0.7792729 ,  6.0169462 ],
       [-1.35672858,  3.52517478],
       [-1.92074891,  5.79966161],
       [-2.79340321,  4.73430001],
       [-2.79655868,  5.05361163],
       [-2.13637747,  5.39255837],
       [ 0.17341809,  3.60918261],
       [-1.22712921,  4.95327158]])

也就是说,我想传递函数第一行的值并进行评估,然后是第二行并进行评估等等,最终结果将是一个数组,其中包含在这些点上评估的值(因此,一个由10个值组成的数组)。

例如,如果函数是一个双变量正态分布 -

def function2(x):
function2 = (mvnorm.pdf(x,[0,0],[[1,0],[0,1]]))
return function2

如果我将上述值传递给此函数,我会得到 -

array([  1.17738907e-05,   1.08383957e-04,   1.69855078e-04,
         5.64757613e-06,   1.37432346e-05,   1.44032800e-04,
         1.33426313e-05,   1.97822328e-06,   6.56121709e-08,
         4.67076770e-05])

因此,基本上,我正在寻找一种重写函数的方法,以便它可以做到这一点。此外,我希望将函数仅保留为一个变量的函数(即只是x的函数)。

谢谢你的帮助!

0