我有一个多输入功能,比如说:
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]
])
我该怎么做? 我最初的问题是我有一个带有三个变量和一个输出的函数,然后我想通过输入每个变量的向量来调用函数,以便我得到一个三维矩阵作为结果
答案 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]])