0

関数インスタンスの配列と、それらのインスタンスに適用する引数の配列がいくつかあります。関数インスタンスの配列は、任意のサイズにすることができます。定義は次のとおりです (はい、各関数は同じ引数を取ります)。

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

関数の各引数は、float の配列です。次に例を示します。

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)

返されます (入力引数のそれぞれに 3 つの要素があり、3 つの配列が返されることに注意してください)。

[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 つの配列の配列が発生します。

[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 に答える