Python:获取多维矩阵作为函数的结果

时间:2015-06-03 12:48:54

标签: python

我有一个多输入功能,比如说:

def bla(a, b):
    f = a + b
    return f

当我做

之类的事情时
import numpy as np
bla(np.asarray([0.2,0.4]), np.asarray([2,4]))

结果是:

array([ 2.2,  4.4])

但是,我希望将bla应用于我的每一对输入(bla(0.2, 2)bla(0.2, 4)bla(0.4, 2)bla(0.4, 4))并获取最终结果为二维矩阵。在这个例子中,我希望结果是:

array([[2.2, 4.2],
[2.4, 4.4]
])

我该怎么做? 我最初的问题是我有一个带有三个变量和一个输出的函数,然后我想通过输入每个变量的向量来调用函数,以便我得到一个三维矩阵作为结果

2 个答案:

答案 0 :(得分:0)

不确定是否要在不修改bla()的情况下执行此操作,但至少在您的示例中,必须进行更改:

def bla(a, b):
    return np.asarray(a+n for n in b)

这对数组a进行操作, b的每个元素,并使用结果构建一个数组。你的例子看起来有点随机(你是如何得到那些.3小数部分的?),但我猜这是你想要的。

答案 1 :(得分:0)

如果你的函数bla可以接受数组而不是标量,你可以使用 meshgrid准备输入,以便bla(A, B)返回所需的输出:

import numpy as np
def bla(a, b):
    f = a + b
    return f

A, B = np.meshgrid([0.2,0.4], [2,4], sparse=True)
bla(A, B)

产量

array([[ 2.2,  2.4],
       [ 4.2,  4.4]])