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

Python:从函数中获取多维矩阵作为结果,python,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)),并以二维矩阵的形式获得最终结果。在本例中,我希

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

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]
])
我该怎么做?
我最初的问题是,我有一个有三个变量和一个输出的函数,然后我想通过为每个变量输入向量来调用该函数,这样我就可以得到一个3-D矩阵,结果是

不确定您是否希望在不修改
bla()
的情况下执行此操作,但对于您的示例,至少这是必须进行更改的地方:

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

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

如果你的函数
bla
可以接受数组而不是标量,你可以使用 准备输入,以便
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]])

你能更清楚地解释一下你想要做什么吗?你想要矩阵乘法吗?2.3和4.3是从哪里来的?你的意思是2.4和4.4吗?请你解释一下行
**维度=输入数量,矩阵的(i,j)元素是bla(ai,bj)**
?它仍然不清楚…对不起我不清楚的解释…谢谢你的简单想法!在使用mesgrid时,如果a和b较大且有三个或更多变量,有时会发生内存错误。您还有其他解决方案吗?@gravedigger:如果您使用
sparse=True
,那么
np.meshgrid
将返回一个“稀疏网格”,它将消耗更少的内存。