Python:将参数映射到数组中的函数

时间:2012-10-26 17:01:05

标签: python numpy

我有一个函数实例数组,以及几个适用于这些实例的参数数组。函数实例数组可以是任意大小。定义如下(是的,每个函数都使用相同的参数):

fcn1(a, b, c)
fcn2(a, b, c)

每个函数参数都是一个浮点数组,例如:

a = numpy.array([1., 2., 3.])
b = numpy.array([1., 2., 3.])
c = numpy.array([1., 2., 3.])

函数实例数组如下所示:

[<function fcn1 at 0x030A44F0> <function fcn2 at 0x030A4530>]

我正在尝试将函数参数映射到每个数组实例。

到目前为止,我尝试过一些简单的事情:

for f in fcn:
    print f(a, b, c)

但是构造函数的方式是,它们返回X个数组,其中X是abc中每个元素的数量。例如,如果我只是打电话:

fcn1(a, b, c)

它将返回(注意每个输入参数中的三个元素,返回三个数组):

[array([0.2343, 0.4943, ..., 0.8943, 0.7115]), array([0.2343, 0.4853, ..., 0.8555, 0.1915]), array([0.7773, 0.1343, ..., 0.8045, 0.9994])]

所以当我运行简单循环时会发生两个数组:

[array([0.2343, 0.4943, ..., 0.8943, 0.7115]), array([0.2343, 0.4853, ..., 0.8555, 0.1915]), array([0.7773, 0.1343, ..., 0.8045, 0.9994])]
[array([0.2343, 0.4943, ..., 0.8943, 0.7115]), array([0.2343, 0.4853, ..., 0.8555, 0.1915]), array([0.7773, 0.1343, ..., 0.8045, 0.9994])]

如何优雅地将参数应用于函数实例?

2 个答案:

答案 0 :(得分:2)

如果我正确阅读,您希望最终得到一个包含功能结果列表列表的数据结构。

function_result_set = [func(*argument_list) for func in function_list]

只要每个函数都能使用len(argument_list)个参数,这将适用于任意长度的函数序列(或实际上是callables,例如类)。

答案 1 :(得分:1)

不确定我是否正确理解你,但你只是想要:

for f in fcn:
    for ix in range(len(a)):
      print f(a[ix], b[ix], c[ix])