Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:将参数映射到数组中的函数_Python_Numpy - Fatal编程技术网

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

Python:将参数映射到数组中的函数,python,numpy,Python,Numpy,我有一个函数实例数组和几个应用于这些实例的参数数组。函数实例的数组可以是任意大小。定义如下(是的,每个函数采用相同的参数): 每个函数参数都是一个浮点数组,例如: 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 0x030A4

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

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

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>]
但函数的构造方式是,它们返回X个数组,其中X是
a
b
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])]

关于如何优雅地将参数应用于函数实例,您有什么想法吗?

不确定我是否正确理解您的意思,但您只是想:

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

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

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

如果我读对了,您希望最终得到一个包含函数结果列表的数据结构

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

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

如果我读对了这篇文章,您希望最终得到一个包含函数结果列表的数据结构

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

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

从循环中获取的内容有什么问题?它复制了结果,因为每个函数返回X个数组,其中X是每个输入参数中的元素数。请将此信息集成到问题中。还不清楚重复是如何发生的,因此如果您能将其与示例输入和输出联系起来,这将有助于理解您的问题。我注意到重复出现在最后一个代码块上方。等等,如果问题是每次迭代都返回相同的结果,为什么不只应用列表中的第一个函数?从循环中得到的结果有什么问题?它会复制结果,因为每个函数返回X个数组,其中X是每个输入参数中的元素数。请将此信息集成到问题中。还不清楚重复是如何发生的,因此如果您能将其与示例输入和输出联系起来,这将有助于理解您的问题。我注意到重复出现在最后一个代码块上方。等等,如果问题是每次迭代都返回相同的结果,为什么不只应用列表中的第一个函数呢?是的,这就是我的想法,但我希望避免循环使用a、b和c中的元素。所有函数都被重新编写以利用矢量化。@strimp099那么,问题是您想将函数应用于列而不是行?我使用了您的建议来循环输入数组中的元素。我不得不修改函数以接受浮点而不是数组。是的,这是我的想法,但我希望避免循环通过a、b和c中的元素。所有函数都被重新编写以利用矢量化。@strimp099那么,问题是您想将函数应用于列而不是行?我使用了您的建议来循环输入数组中的元素。我不得不修改函数以接受浮动而不是数组。
function_result_set = [func(*argument_list) for func in function_list]