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
将返回一个“稀疏网格”,它将消耗更少的内存。