0

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

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 是 、 和 中的每个元素ab数量c。例如,如果我简单地调用:

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])]

关于如何优雅地将参数应用于函数实例的任何想法?

4

2 回答 2

2

如果我没看错,您最终希望得到一个包含函数结果列表列表的数据结构。

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

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

于 2012-10-26T17:14:59.963 回答
1

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

for f in fcn:
    for ix in range(len(a)):
      print f(a[ix], b[ix], c[ix])
于 2012-10-26T17:06:10.117 回答